允许服务器/用户控件上的任何属性/属性

时间:2009-11-03 15:51:22

标签: asp.net properties user-controls servercontrol

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

以asp:Button控件为例。

此代码完全有效:

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

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

我得到的错误是这样的“控件没有名为”crapAttribute“的公共属性。

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

我看过Reflector中的标准控件,它们确实有各种属性和东西,但是我看到的并没有立刻吸引我的注意力。

我的自定义控件继承自WebControl的价值。

2 个答案:

答案 0 :(得分:4)

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

我想不出为什么会失败的原因。如果您有Attributes,则必须记住在Render的实现中呈现{{1}}集合。

您可以添加一个简单的新控件代码示例吗?

答案 1 :(得分:0)

这样做的一种方法是在代码隐藏

中添加自定义属性
myCustomControl.Attributes.Add("customproperty", "value");

这应该适合你。

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