代码之家  ›  专栏  ›  技术社区  ›  nothrow

来自不同程序集的ASP.NET控件

  •  3
  • nothrow  · 技术社区  · 14 年前

    我的“GeneralControls”程序集中有一些控件(经典dll),这些控件由.ascx文件(及其代码隐藏)组成。

    我正在引用该dll,并将控件用作:

    <%@ Register Tagprefix="g" Assembly="GeneralControls" Namespace="GeneralControls.UI" %>
    
    
    <g:FooterControl ID="Footer" runat="server" />
    

    但是,footerControl包含一些其他控件(标签等),从codebehind使用的控件抛出 NullArgumentException . 共享ascx控件的正确方法是什么?事先谢谢。

    1 回复  |  直到 14 年前
        1
  •  3
  •   David    14 年前

    用户控件(.ascx)必须存在于从其提供服务的Web项目中。不能将它们移动到其他程序集以进行共享。

    如果想要共享控件,则需要一个没有声明性模式的自定义服务器控件,所有子控件都必须通过重写CreateChildControls等在代码中创建。

    http://support.microsoft.com/kb/893667 (请参见标题为“用户控件和自定义控件之间的基本区别是什么?”的部分)