背景:我有一个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