来自不同程序集的 ASP.NET 控件
我的“GeneralControls”程序集(经典 DLL)中有一些控件,它们由 .ascx 文件(以及它们的代码隐藏)组成。
我引用该 DLL,并将控件用作:
<%@ Register Tagprefix="g" Assembly="GeneralControls" Namespace="GeneralControls.UI" %>
<g:FooterControl ID="Footer" runat="server" />
但是,FooterControl 包含一些其他控件(标签等),而那些从代码隐藏中使用的控件会抛出 NullArgumentException。共享 ascx 控件的正确方法是什么?提前致谢。
I've got some controls in my 'GeneralControls' assembly (classic DLL), those consists of .ascx file (and codebehind for them).
I'm referencing that DLL, and using the controls as:
<%@ Register Tagprefix="g" Assembly="GeneralControls" Namespace="GeneralControls.UI" %>
<g:FooterControl ID="Footer" runat="server" />
but, FooterControl contains some other controls (labels, and so on), and those, used from codebehind, throws NullArgumentException
. What's the correct way to share ascx controls? Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
用户控件 (.ascx) 必须存在于为其提供服务的 Web 项目中。您不能将它们移动到另一个程序集以进行共享。
如果您想要共享控件,则需要一个不具有声明性模式的自定义服务器控件,所有子控件必须通过重写 CreateChildControls 等在代码中创建。
http://support.microsoft.com/kb/893667(请参阅标题为“用户控件和自定义控件之间的基本区别是什么?”的部分)
User Controls (.ascx) must exist in the web project they are served from. You cannot move them to another assembly for sharing purposes.
If you want to have shared controls, you need a Custom Server Control which does not have the declarative pattern, all child controls must be created in code by overriding CreateChildControls, etc.
http://support.microsoft.com/kb/893667 (see the section titled "What are the basic differences between user controls and custom controls?")