背景:我有一個CompositeControls工具集,用於構建窗體。這些控件本身綁定了一些基本驗證任務的jQuery驗證。使用ASP.NET驗證器驗證複合控件數據
問題:我要讓這些CompositeControls允許開發者使用ASP.NET驗證程序(即RegExValidator,RequiredFieldValidator的,的CustomValidator等)來驗證我的CompositeControls的一個數據更加靈活的驗證。
例子:我希望開發商能夠做到這樣的事情:
<asp:ValidationSummary runat=server HeaderText="There were errors on the page:" />
<custom:TextBox id='SomeTextBox' Label='Enter Name Here:' text='' runat='server' />
<asp:RequiredFieldValidator runat=server ControlToValidate=SomeTextBox ErrorMessage="Name is required."> *
</asp:RequiredFieldValidator>
我已經加入了「ValidationProperty」的複合文本框,但RequiredFieldValidator的(或任何其他國稅發驗證器)似乎無法識別文本框或來自它的數據。文本框(以及我構建的所有其他自定義CompositeControls)都繼承了CompositeControl,並將屬性「ValidationProperty」設置爲公開屬性,該屬性公開該控件的數據元素,並且還包含「字符串ValidationGroup」屬性。
問:有誰知道還有什麼或有什麼具體複合控件需要發揮好與ASP.NET驗證程序(我寧願避免了在複合控件在內的所有驗證類型的實例,當然,除非這是必要的)?
看來,我遇到的實際問題並未與複合控件本身綁定,而是複合控件包含在我開發的自定義包裝控件中。 .net認爲複合控件是包裝控件的子控件,因此不在頁面級別(這就是驗證程序沒有識別它的原因)。 要解決問題,我有控制從WebControl而不是CompositeControl繼承,並實現了IValidator(替代方案也將繼承BaseValidator)。這似乎工作得很好,仍然保持我所尋找的靈活性。 – JakeHova 2013-04-02 14:41:05