【发布时间】:2011-09-19 10:47:40
【问题描述】:
我有一个文本框,我执行 CustomValidation 来进行客户端和服务器端验证, 如何同时触发客户端和服务器端验证?现在服务器端验证仅在客户端验证后触发。
有可能吗?
【问题讨论】:
-
一次显示所有可能的错误。
我有一个文本框,我执行 CustomValidation 来进行客户端和服务器端验证, 如何同时触发客户端和服务器端验证?现在服务器端验证仅在客户端验证后触发。
有可能吗?
【问题讨论】:
基本上:不,如果需要,您可以一个接一个地上升,但客户端验证是存在的,以避免为了验证而调用服务器。如果你仍然需要调用服务器,你为什么还要编写客户端验证脚本?
编辑:
如果您希望在表单发布之前进行服务器验证,我建议您使用 Ajax 在客户端验证脚本中调用服务器验证例程。它需要一个小技巧,因为 Ajax 根据定义是异步的,而客户端验证不是。从这里开始:http://www.codeproject.com/KB/ajax/AjaxValidation.aspx
【讨论】:
客户端和服务器端验证可以有不同的目的,并且不能总是假设通过客户端验证来保持安全。
默认情况下,一旦客户端事件结束,请求就会发送到服务器,这就是页面循环发生的方式。但是如果您需要直接发送服务器请求,则需要使用 AJAX 并发送异步请求。
但从逻辑上讲,最好分别处理这两个验证,以获得更清洁和更好的方法。
【讨论】:
我猜您有一些仅具有服务器端实现的 CustomValidator,它在您的常规验证器已经运行之后运行。这样,用户首先会看到来自常规验证器的验证错误,在修复这些错误之后,必须通过自定义验证器,这很令人困惑。 我建议关闭所有客户端验证(将 EnableClientValidation 设置为 false),并仅在服务器端运行整个事情。这样所有验证器同时运行。
门诺
【讨论】: