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

时间:2012-12-12 04:31:55

标签: asp.net

我在按钮点击处理程序中有以下代码。这两种方法都很好。 Page_ClientValidate()会导致额外的验证检查并进行处理,而Page_IsValid会使用现有属性。

问题

  1. 如果点击按钮,是否始终保证在此时间计算Page_IsValid?如果无法保证,我们需要明确调用Page_ClientValidate()
  2. 在设置Page_IsValid之前发生了什么事件?对于此类活动,我们不应该依赖Page_IsValid
  3. 更新

    是否确保仅在验证部分完成后调用按钮单击事件处理程序(在JavaScript中)(即,在作为验证的一部分调用Page_ClientValidate()之后)?如果可以肯定,我可以依赖Page_IsValid吗?

    SCRIPT

      $('#btnSave').click(function (e) {
    
      //Aproach 1
      var isValid = Page_ClientValidate('');
      if (isValid) 
      {
           //Do reamining work
      }
    
      //Aproach 2
      if (Page_IsValid)
      {
          //Do reamining work
      }
    
      });
    

    参考

    1. Hide redundant error message in ASP.Net ValidationSummary
    2. Validator causes improper behavior for double click check
    3. Page_ClientValidate is not defined
    4. Page_ClientValidate is validating multiple times.
    5. MSDN - ASP.NET Validation in Depth

1 个答案:

答案 0 :(得分:4)

  1. 如果点击按钮,则在按钮的Page_ClientValidate()设置为CausesValidation时(且仅当)时调用true

  2. Page_ClientValidate()是回发过程的一部分,因此在按钮的点击中调用它。
    我仅在强调Page_IsValid之后的函数范围内依赖Page_ClientValidate()。否则我总是致电Page_ClientValidate()

  3. 注释:反复调用Page_ClientValidate()可能会导致页面过于突兀(多个警报等)。这就是为什么拥有一个负责所有验证的自定义验证功能的原因。