0

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

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

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

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

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

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

从部署的角度来看,虚拟路径提供者似乎更好。然而,“ascx/aspx 复制”解决方案更容易实现(无需创建自定义虚拟路径提供程序)。

4

3 回答 3

1

我真的不喜欢斯科特的解决方案。我认为这很丑陋,并且会产生不必要的开销。我也看到了类似的行为,但它对我不起作用。

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

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

  • 如果您的 ascx 文件有任何导致问题的服务器标签(在 javascript 或任何其他地方),您将收到一个无用的运行时错误。
  • 每次对 ascx 的标记或文件本身存在的 Javascript 进行更改时,您都必须重新构建应用程序才能看到结果。如果您尝试更改现有控件的设计,那可能会很痛苦。

我已经使用了本文中描述的解决方案,并且效果很好:

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

我希望这会有所帮助...

于 2009-12-22T17:18:21.840 回答
1

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

于 2009-12-22T17:20:42.210 回答
1

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

于 2009-12-22T17:42:27.997 回答