【发布时间】:2009-09-23 18:37:23
【问题描述】:
我有一个类库。该库包含 widget.ascx 控件。如何从 web 加载这个 webusercontrol。我知道“负载控制”。但这不适用。
如何从库中加载 Web 用户控件?
2009.09.24
我的主要目标是创建基于插件的 Web 应用程序。每个插件都将是 Web 应用程序的小部件。
我需要从库中动态加载 web 用户控件
【问题讨论】:
标签: asp.net assemblies user-controls
我有一个类库。该库包含 widget.ascx 控件。如何从 web 加载这个 webusercontrol。我知道“负载控制”。但这不适用。
如何从库中加载 Web 用户控件?
2009.09.24
我的主要目标是创建基于插件的 Web 应用程序。每个插件都将是 Web 应用程序的小部件。
我需要从库中动态加载 web 用户控件
【问题讨论】:
标签: asp.net assemblies user-controls
您需要将库的引用添加到您的 Web 项目中。
然后像使用任何其他控件一样,以编程方式或在@Register 指令中实例化它。
善良,
丹
【讨论】:
除了将DLL明显添加到您的项目引用之外,您还需要注册控件。您可以在将使用该控件的每个页面上执行此操作,但我通常更喜欢在 web.config 中执行此操作。举个简单的例子,这是我用来在我的应用中注册 Infragistics UltraWebGrid 控件的行。
<pages>
<controls>
<add tagPrefix="ig" namespace="Infragistics.WebUI.UltraWebGrid" assembly="Infragistics35.WebUI.UltraWebGrid.v8.2, Version=8.2.20082.1000, Culture=neutral, PublicKeyToken=7DD5C3163F2CD0CB"/>
</controls>
</pages>
TagPrefix 的工作方式有点像页内命名空间,所以如果我有一堆从一个 DLL 导入的控件,它们可能都具有相同的 TagPrefix。在页面中,我只需按如下方式引用我的控件:
<ig:UltraWebGrid runat="server" SetSomeOtherPropertiesToo="blah" />
【讨论】:
我不确定如何将 .ascx 文件添加到您的类库中。通常使用需要现有文件的 LoadControl 加载用户控件。如果用户控件被编译为类库中的嵌入式资源,您可以使用GetManifestResourceStream() 来读取用户控件的内容,然后使用ParseControl 从使用 GetManifestResourceStream 读取的字符串创建控件。
【讨论】: