是否使用Page_IsValid或Page_ClientValidate()(用于客户端事件)

LCJ*_*LCJ 7 asp.net

我在按钮单击处理程序中有以下代码.这两种方法都很好.将Page_ClientValidate()导致一个额外的验证检查,并做处理而Page_IsValid利用现有的财产.

质询

  1. 如果点击按钮,是否始终保证Page_IsValid在那个时间计算?如果不能保证,我们需要Page_ClientValidate()明确调用.
  2. 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
  }

  });
Run Code Online (Sandbox Code Playgroud)

参考文献:

  1. 隐藏ASP.Net ValidationSummary中的冗余错误消息
  2. 验证器导致双击检查的不正确行为
  3. 未定义Page_ClientValidate
  4. Page_ClientValidate多次验证.
  5. MSDN - 深度ASP.NET验证

Pet*_*van 4

  1. 在单击按钮的情况下,Page_ClientValidate()当(且仅当)按钮CausesValidation设置为时调用true

  2. Page_ClientValidate()是回发过程的一部分,因此在按钮单击时调用。我仅在调用
    依赖Page_IsValid于函数的范围。否则我总是打电话。 Page_ClientValidate()Page_ClientValidate()

评论:Page_ClientValidate()重复调用可能会导致页面过于突兀(多个警报等)。这就是为什么最好有一个自定义验证函数来处理所有验证。