代码之家  ›  专栏  ›  技术社区  ›  Jereme

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

  •  1
  • Jereme  · 技术社区  · 15 年前

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

    [
        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; }
    }
    

    然后,当我在Web窗体中使用控件时,我希望能够:

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

    这样我就可以定义一个可以使用任意数量验证器的类。当我现在试着这么做的时候,我最终错误地说:

    类型“ivalidator”没有名为“fancyvalidator”的公共属性

    我需要做什么才能让这工作?

    谢谢!

    2 回复  |  直到 15 年前
        1
  •  1
  •   Andrew Hare    15 年前

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

        2
  •  0
  •   Jereme    14 年前

    顺便说一句,我发现如果我对类型列表进行验证,那么标记如下所示:

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

    不完全是我想要的,但工作。