可重用的ASP.NET用户控件库:虚拟路径提供程序还是ascx / aspx副本?

时间:2009-12-22 16:45:51

标签: asp.net user-controls virtualpathprovider

我有一个ASP.Net Web应用程序,我想在其他Web应用程序中用作可重用的用户控件库。

这个问题的一个解决方案是使用Scott Guthrie在这里描述的内容:

http://weblogs.asp.net/scottgu/archive/2005/08/28/423888.aspx

是在使用控件库的Web应用程序中复制ascx / aspx文件(没有代码隐藏)。

我实际上看到了另一个解决方案:将ascx / aspx嵌入到用户控件库中,然后使用自定义虚拟路径提供程序来获取它们。

有谁知道哪种解决方案最好?

从部署的角度来看,虚拟路径提供商似乎更好。 但是,'ascx / aspx copy'解决方案更容易实现(无需创建自定义虚拟路径提供程序)。

3 个答案:

答案 0 :(得分:1)

我真的不喜欢斯科特的解决方案。我认为它是不合理的,并且创造了不必要的开销。我在行动中也看到了类似的东西,它对我不起作用。

我也有与您描述的相同的要求,我使用了虚拟路径提供程序选项。通过这种方式,我可以轻松地在Web应用程序之间重用所有用户控件,而无需解决方法。

虚拟路径提供程序有几个问题:

  • 如果你的ascx文件有任何服务器标签(在javascript或任何其他地方)导致问题,你将得到一个没有用的运行时错误。
  • 每次更改ascx的标记时,都必须重建应用程序,或者为了查看结果而对文件中存在的Javascript进行重建。如果您尝试更改现有控件的设计,那可能会非常痛苦。

我已经使用了本文所述的解决方案,但效果非常好:

http://www.codeproject.com/KB/user-controls/EmbeddedUserControl.aspx

我希望有帮助...

答案 1 :(得分:1)

几周前我遇到了同样的情况,我无法让斯科特的解决方案发挥作用。我改为使用自定义服务器控件并将它们放在自己的类库中。

答案 2 :(得分:1)

我真的不认为以这种方式使用用户控件是个好主意。如果您需要在单独的库中,则应将它们转换为服务器控件。