2010-03-11 45 views
1

我想要我的自定义控件是一个接口类型的属性。例如:具有属性是一个接口的ASP.NET自定义控件

[ 
    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”

什么我需要做的,使这项工作?

谢谢!

回答

0

作为一个方面说明,我发现我可以做这个工作,如果我做验证类型列表中,则标记看起来是这样的:

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

不太什么我之后,但工程。

1

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

+0

没错,我绝对可以走这条路。在同一时间,现在我想弄清楚如何做到这一点:) – Jereme 2010-03-11 20:48:29

+0

我明白 - 只是想我会指出:) – 2010-03-11 20:50:08

+0

作为一个侧面说明,我发现我可以使这项工作,如果我进行验证类型为List的然后标记看起来像这样: <我:MyTextBox ID = “TXT” RUNAT = “服务器”> <我:FancyValidator /> 不太我在追求什么。如果一切都失败了,可能不得不随身携带... – Jereme 2010-03-11 21:14:42

相关问题