2011-10-17 126 views

回答

0

通常,用户控件被设计为在单个项目中使用。这是因为用户控件包含两部分 - 标记(ascx)文件和代码隐藏。如果将项目编译到库中,则代码隐藏类将被封装在dll中,而不是ascx部分。标记(ascx)包含实际的控制树,因此无法使用用户控制。因此,共享用户控件的解决方案之一是将用户控件的代码编译到库中,并将ascx文件复制到目标项目中。

但更好的解决方案是将用户控件的标记(ascx)打包为库项目的嵌入资源,然后使用自定义虚拟路径提供程序从资源加载它。请参阅描述此技术的this code-project article

+0

有没有更简单的解决方案? ( – user603007

+0

@ user603007,最简单的解决方案是将用户控制文件(代码和标记)复制到不可维护的新项目中。更易于维护的方法是将代码打包,然后通过直接复制或共享文件夹(或共享文件夹在VSS等源代码控制系统中),然而,最好的方法是将代码和标记包装在一起! – VinayC

0

一个办法,我这样做是为了有一个 1. Web应用程序项目,共享用户控件, 2.然后由需要使用控件 3.每个应用程序/网站使用其他的Web应用程序项目中引用控件创建一个指向ascx位置的virt目录,以便它们可以包含在您的页面中

当部署到生产当然有这种变化..取决于您的部署首选项。 是的,我同意一般情况下,如果你想重新使用,那么应该使用服务器控件/类库,但在usercontrols中实现复杂的UI和共享如上所述通常更容易和更快。 从不同的现有Web应用程序重用用户控件的时候..刚刚创建的virt目录指向ASCX位置和参考应用程序的DLL(或只是在你的BIN下降)

+0

好的。VinayC描述的几乎相同,但是13分钟之前)) – Jack0fshad0ws

相关问题