是否可以在不同的Web应用程序之间共享Web控件(.ASCX文件)?
有问题的文件是另一个网络项目的一部分。我尝试编辑web.config来引用ascx文件,但是我遇到了语法错误,它告诉我Iam不允许在这条路径中使用“..”。
<pages>
<controls>
<add tagPrefix="my" tagName="IntegerInput" src="~/../MyCommonProject/controls/basic/IntegerInput.ascx" />
我想要解决的基本问题是我们有两个具有许多共同功能的应用程序,特别是Web控件。
简而言之,我们希望在一个单独的项目中提取这两个项目的所有常用功能,因此我们在开发中没有重复的代码,但是这两个项目应该能够作为完全不同的应用程序单独部署,每个项目都得到他们自己的这些控件的副本。
我们如何解决这个问题?
答案 0 :(得分:3)
您必须将用户控件转换为自定义服务器控件。
MSDN有一篇文章here。
答案 1 :(得分:2)
我找到了两个解决此问题的方法:
创建一个包含ascx'es和代码的项目。该项目的源文件与使用ascx'es的其他项目共享(即xcopies)。 (blog)
为您的用户控件创建一个库,添加现有的ascx和代码隐藏。在Web项目中引用此库。缺点:您使用设计时功能,这意味着:您在设计模式下看不到ascx。 (blog)
@Forgotten Semicolon建议的第三种解决方案是转换为服务器控件。此方法还可以提高设计人员的性能。
答案 2 :(得分:2)
还有另一个潜在的解决方案:
将控件放在一个网站中的单个目录中,您认为该网站是“主要”网站;然后在另一个站点中创建一个指向同一物理目录的虚拟目录。
这实际上只适用于ascx
文件,而不适用于代码隐藏文件。