2010-03-11 88 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

相關問題