具有接口属性的ASP.NET自定义控件

时间:2010-03-11 20:46:02

标签: asp.net controls

我想在我的自定义控件上有一个属性,它是一种接口类型。例如:

[
    ToolboxData("<{0}:MyTextBox runat=server></{0}:MyTextBox"),
    ParseChildren(true, "Validation")
]
class MyTextBox : WebControl
{
    [
        Category("Behavior"),
        Description("The validation to use"),
        DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
        PersistenceMode(PersistenceMode.InnerDefaultProperty)
    ]
    public IValidation Validation { get; set; }
}

然后当我在网络表单中使用我的控件时,我希望能够做到:

        <my:MyTextBox ID="txt" runat="server">
            <my:FancyValidator  />
        </my:MyTextBox>

这样我就可以定义一个可以使用任意数量验证器的类。当我现在尝试这样做时,我最终会出错:

类型'IValidator'没有名为'FancyValidator'的公共属性

我需要做些什么来完成这项工作?

谢谢!

2 个答案:

答案 0 :(得分:1)

老实说,最简单的方法是在代码隐藏中而不是在标记中设置属性。

答案 1 :(得分:0)

作为旁注,我发现如果我对类型列表进行验证,我可以使这个工作成功,那么标记看起来像这样:

<my:MyTextBox ID="txt" runat="server">
 <Validation>
   <my:FancyValidator />
 </Validation>
</my:MyTextBox>

不是我追求的,但是有效。