3

我有一个 asp.net 文件:

  • 3 个单选框,必须选择一个
  • 必须在其中选择项目的列表框
  • 验证码验证

现在我有 4 个验证器:

  • 单选框的 CustomValidator
  • 列表框的 CustomValidator
  • 验证码验证的自定义验证器(保存在会话中)
  • 验证码文本框的RequiredFieldValidator 不能为空。

我的问题是订单。如果用户尝试发送公式并且所有 4 个验证器都错误,则只会显示 RequiredFieldValidator,因为其他 3 个是服务器端的。用户现在认为“哦,只有一个错误”并纠正了它。在那之后,又出现了另外 3 个错误,用户可能对此有点生气——“为什么系统在第一次播放时不告诉我?!”

那么,如何有一个用户友好的解决方案呢?

有没有办法同时触发服务器端验证,客户端验证失败?或者有没有办法在服务器端触发客户端验证?

(注意!我试图移除RequiredFieldValidator,而是执行第四个CustomValidator。我这样做了,我有4个CustomValidator,没有Requ-Field-Val。最终,在发送公式后,没有一个CustomValidator会被击中= (我不知道为什么。)

4

2 回答 2

2

一种方法是使用EnableClientScript属性关闭必填字段验证器的客户端验证。这样您就可以在服务器端进行所有验证。

但更好的方法(如果可能的话)是对所有这些都使用客户端验证,即使用自定义 js 验证逻辑和使用ClientValidationFunction属性的自定义验证器 - 请参阅本文以获取此类示例。

于 2011-05-09T04:58:23.710 回答
1

为控件验证器和提交函数添加 ValidationGroup="abc" 属性 使用 Page.Validate("abc") 方法在某个时间验证服务器端控件。

像这样的东西。

Page.Validate("abc")
If Not Page.IsValid Then
    Return False  
End If
于 2011-10-14T05:46:28.177 回答