我在按钮单击处理程序中有以下代码.这两种方法都很好. Page_ClientValidate()会导致额外的验证检查并进行处理,而Page_IsValid则使用现有属性.
质询
>如果点击按钮,是否始终保证在该时间之前计算出Page_IsValid?如果不能保证,我们需要显式调用Page_ClientValidate().
>在设置Page_IsValid之前发生了什么事件?对于此类事件,我们不应该依赖Page_IsValid
UPDATE
是否确保仅在验证部分完成后调用按钮单击事件处理程序(在JavaScript中)(即,在作为验证的一部分调用Page_ClientValidate()之后)?如果可以肯定,我可以依赖Page_IsValid吗?
脚本
$('#btnSave').click(function (e) { //Aproach 1 var isValid = Page_ClientValidate(''); if (isValid) { //Do reamining work } //Aproach 2 if (Page_IsValid) { //Do reamining work } });
参考文献:
> Hide redundant error message in ASP.Net ValidationSummary
> Validator causes improper behavior for double click check
> Page_ClientValidate is not defined
> Page_ClientValidate is validating multiple times.
> MSDN – ASP.NET Validation in Depth
解决方法
>如果单击按钮,则在按钮的CausesValidation设置为true时(且仅当)时调用Page_ClientValidate().
> Page_ClientValidate()是回发过程的一部分,因此在按钮的单击中调用它.
在调用Page_ClientValidate()之后,我仅在函数范围内依赖Page_IsValid.否则我总是调用Page_ClientValidate().
> Page_ClientValidate()是回发过程的一部分,因此在按钮的单击中调用它.
在调用Page_ClientValidate()之后,我仅在函数范围内依赖Page_IsValid.否则我总是调用Page_ClientValidate().
注释:重复调用Page_ClientValidate()可能会导致页面过于突兀(多个警报等).这就是为什么拥有一个负责所有验证的自定义验证功能的好处.