我可以在ValidationSummary之后调用函数吗?

时间:2011-10-26 13:02:46

标签: c# javascript .net validation

我在客户端有一个ValidationSummary(应该由asp:LinkBut​​ton调用)来检查我的RequiredFieldValidatorCustomValidator

<asp:ValidationSummary 
    ID="valSum" 
    runat="server" 
    CssClass="label" 
    HeaderText="There are these errors:" 
    ShowSummary="False" 
    ShowMessageBox="True" 
    EnableClientScript="True" 
    DisplayMode="BulletList">
</asp:ValidationSummary>

我需要,如果有错误(所以有空字段或自定义验证器失败)调用另一个javascript函数。

我真的希望这可以在.NET 3.5上使用,对吗?

我在SO here上看过类似的问题,但根本不清楚。

2 个答案:

答案 0 :(得分:8)

将此脚本放在页面末尾:

<script type="text/javascript">
     var originalValidationSummaryOnSubmit = ValidationSummaryOnSubmit;
     ValidationSummaryOnSubmit = function (validationGroup) {
          originalValidationSummaryOnSubmit(validationGroup);

          if (Page_IsValid === false) {
               alert("boo!");
          }
     }
</script>

答案 1 :(得分:4)

是的,这是可能的。您将需要更改链接按钮和/或其他控件的OnClientClick属性,从而导致执行验证。还要将CausesValidation属性设置为false。

  <asp:LinkButton ID="lnkButton1" runat="server" CausesValidation="false" OnClientClick="return DoValidation('');" ... />

Javascript功能:

 function DoValidation(validationGroup) {
      var isValid = Page_ClientValidate(validationGroup);
      if (!isValid){
         isValid = DoSomethingElse();
      }
     return isValid;
 }

如果您只想验证一个组,可以将该组的名称传递给“DoValidation”函数。

  <asp:LinkButton ID="lnkButton1" runat="server" CausesValidation="false" OnClientClick="return DoValidation('NameOfGroup');" ... />