我想在我的自定义控件上有一个属性,它是一种接口类型。例如:
[
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'的公共属性
我需要做些什么来完成这项工作?
谢谢!
答案 0 :(得分:1)
老实说,最简单的方法是在代码隐藏中而不是在标记中设置属性。
答案 1 :(得分:0)
作为旁注,我发现如果我对类型列表进行验证,我可以使这个工作成功,那么标记看起来像这样:
<my:MyTextBox ID="txt" runat="server">
<Validation>
<my:FancyValidator />
</Validation>
</my:MyTextBox>
不是我追求的,但是有效。