【问题标题】:How to load webusercontrol from classlibrary如何从类库中加载 Web 用户控件
【发布时间】:2009-09-23 18:37:23
【问题描述】:

我有一个类库。该库包含 widget.ascx 控件。如何从 web 加载这个 webusercontrol。我知道“负载控制”。但这不适用。

如何从库中加载 Web 用户控件?

2009.09.24

我的主要目标是创建基于插件的 Web 应用程序。每个插件都将是 Web 应用程序的小部件。

我需要从库中动态加载 web 用户控件

【问题讨论】:

    标签: asp.net assemblies user-controls


    【解决方案1】:

    您需要将库的引用添加到您的 Web 项目中。

    然后像使用任何其他控件一样,以编程方式或在@Register 指令中实例化它。

    善良,

    【讨论】:

    • 就像他说的那样,添加对类库程序集的引用,并在您的代码中在名称空间的顶部添加一个 Using/Include 语句,然后像其他任何东西一样使用它。完成初始化对象后,您可以使用 Controls.Add 方法将其添加到页面中。
    【解决方案2】:

    除了将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" />
    

    【讨论】:

      【解决方案3】:

      我不确定如何将 .ascx 文件添加到您的类库中。通常使用需要现有文件的 LoadControl 加载用户控件。如果用户控件被编译为类库中的嵌入式资源,您可以使用GetManifestResourceStream() 来读取用户控件的内容,然后使用ParseControl 从使用 GetManifestResourceStream 读取的字符串创建控件。

      【讨论】:

      • 我已将 widget.ascx 从 Web 应用程序复制到类库。
      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多