0

背景:我有一个用于构建表单的 CompositeControls 工具集。控件本身与一些用于基本验证任务的 jquery 验证相关联。

问题: 我希望通过允许开发人员使用 ASP.NET 验证器(即 RegExValidator、RequiredFieldValidator、CustomValidator 等)来验证我的一个 CompositeControls 中的数据,从而使这些 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 验证器配合使用(我宁愿避免在复合控件中包含所有验证器类型的实例,除非这是必要的)?

4

1 回答 1

1

我最后一次研究这个问题是在 2005 年左右,但据我记得,这里有两个不同的问题:

  1. 客户端验证代码如何找到要验证的值
  2. 服务器端验证如何找到要验证的值

ValidationProperty如果我没记错的话,设置只会影响服务器端验证。如果您还没有,请在回发后检查IsValid验证器的属性是否设置为false服务器端。

这可能已经改变,但我认为验证控件只能验证与它们具有相同命名容器的控件也是正确的。

在客户端,我有点模糊,但我认为情况仍然是验证脚本将寻找一个客户端 ID 对应于它被告知要查找的服务器 ID 的元素,并value在那。如果您没有在客户端公开一个,它将无法找到任何要验证的内容。

如果您有时间,逐步完成验证 javascript 会很有帮助。这将教你很多关于客户端验证如何找到它验证的值的知识。

希望这可以帮助。

于 2013-03-20T00:12:24.280 回答