asp.net – 是否使用Page_IsValid或Page_ClientValidate()(用于客户端事件)

我在按钮单击处理程序中有以下代码.这两种方法都很好. 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()可能会导致页面过于突兀(多个警报等).这就是为什么拥有一个负责所有验证的自定义验证功能的好处.

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...