7

我在按钮单击处理程序中有以下代码。两种方法都可以正常工作。这Page_ClientValidate()会导致额外的验证检查并在Page_IsValid使用现有属性的同时进行处理。

问题

  1. 在单击按钮的情况下,是否总是保证到那时Page_IsValid已经计算出来?如果不能保证,我们需要Page_ClientValidate()显式调用。
  2. 设定之前发生的事件Page_IsValid是什么?对于此类事件,我们不应依赖Page_IsValid

更新

是否确保按钮单击事件处理程序(在 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
  }

  });

参考文献

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

1 回答 1

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

  2. Page_ClientValidate()是回发过程的一部分,所以它在按钮的点击中被调用。调用
    我只依赖于Page_IsValid函数的范围。否则我总是打电话。 Page_ClientValidate()Page_ClientValidate()

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

于 2012-12-12T06:39:26.837 回答