我注意到在System.Web.UI.WebControls命名空间中的大多数(如果不是全部)标准Web控件上,您可以添加所需的任何属性而不会使页面崩溃.
以asp:Button控件为例.
此代码完全有效:
<form runat="server"> <asp:Button runat="server" Text="Test button" crapAttribute="crapValue" /> </form>
现在,我有一个自定义服务器控件,如果我添加任意属性,它会崩溃.它只接受定义了相应公共属性的属性.
我得到的错误是这样的“控件没有名为”crapAttribute“的公共属性.
我希望我的自定义控件接受任何属性而不会崩溃.我需要做些什么才能工作?
我看过Reflector中的标准控件,它们确实有各种各样的属性和东西,但是我看到的东西没有立即引起我的注意.
我的自定义控件继承自WebControl的价值.
解决方法
您不必特别做任何事情来允许将任意属性添加到控制标记中.从WebControl派生的东西通常会挖掘这些属性并将它们转储到Attributes集合中.
我想不出为什么会失败的原因.如果有的话,您必须记住在Render的实现中呈现Attributes集合.
你能添加一个简单的新控件代码示例吗?