后台:我有一个CompositeControls工具集,我用它来构建表单。控件本身与基本验证任务的某些jquery验证相关联。
问题:我想通过允许开发人员使用ASP.NET验证器(即RegExValidator,RequiredFieldValidator,CustomValidator等)来验证其中一个中的数据,从而使这些CompositeControl的验证更加灵活。我的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>
我添加了&#34; ValidationProperty&#34;到复合文本框,但RequiredFieldValidator(或任何其他验证器)似乎无法识别文本框或来自它的数据。文本框(以及我构建的所有其他自定义CompositeControls)继承CompositeControl,具有属性&#34; ValidationProperty&#34;设置为公开控件的数据元素的公共属性,并包含一个&#34;字符串ValidationGroup&#34;财产也是如此。
问题:是否有人知道复合控件需要什么,或者具体使用什么才能与ASP.NET验证器一起使用(我更喜欢避免包含所有验证器类型的实例)复合控制,除非当然是必要的)?
答案 0 :(得分:1)
我在2005年左右对此进行了调查,但从我记忆中看,这里有两个不同的问题:
如果我没有弄错的话,设置ValidationProperty
只会影响服务器端验证。如果您还没有,请在回发后检查验证程序的IsValid
属性是否在服务器端设置为false
。
这可能已经改变,但我认为验证控件只能验证具有相同命名容器的控件。
在客户端,我有点朦胧,但我认为情况仍然是验证脚本会查找一个元素,其客户端ID对应于它被告知要查找的服务器ID,并寻找一个value
属性。如果您没有在客户端上公开一个,那么它将无法找到任何要验证的内容。
如果你有时间,那么逐步完成验证javascript会有很大帮助。这将教你很多关于客户端验证如何找到它验证的值。
希望这会有所帮助。