5

我注意到,在 System.Web.UI.WebControls 命名空间中的大多数(如果不是全部)标准 Web 控件上,您可以向它们添加任何您想要的属性,而不会导致页面崩溃。

以 asp:Button 控件为例。

此代码完全有效:

<form runat="server">
    <asp:Button runat="server" Text="Test button" crapAttribute="crapValue" />
</form>

现在,我有一个自定义服务器控件,如果我向它添加任意属性,它就会崩溃。它只接受定义了相应公共属性的属性。

我得到的错误类似于“控件没有名为“crapAttribute”的公共属性”。

我希望我的自定义控件能够接受任何属性而不会崩溃。我需要做什么才能让它工作?

我查看了 Reflector 中的标准控件,它们确实具有各种属性和东西,但我没有看到任何立即引起我注意的东西。

我的自定义控件是从 WebControl 继承而来的。

4

2 回答 2

4

您不必做任何特别的事情来允许将任意属性添加到控制标记中。从 WebControl 派生的东西通常会收集这些属性并将它们转储到 Attributes 集合中。

我想不出为什么这会失败。如果你有一个,你必须记住在你的实现中呈现Attributes集合。Render

您能否添加一个未能解决您的问题的新控件代码的简单示例?

于 2009-11-03T16:26:53.993 回答
0

一种方法是在后面的代码中添加自定义属性

myCustomControl.Attributes.Add("customproperty", "value");

这应该为您完成这项工作。

但是,我有兴趣知道如何在服务器控件本身中执行此操作。

于 2009-11-03T16:19:08.480 回答