2013-07-16 3 views
1

나는 당황 스럽습니다. 누군가 내 유효성 검사 요약에 맞춤 검사기가 표시되지 않는 이유를 지적 할 수 있습니까? 사용자 정의 유효성 검사기의 코드를 단계별로 실행하면 args.IsValid가 false로 설정됩니다. 여기 ValidationSummary에 CustomValidator 오류 메시지가 표시되지 않습니다.

<asp:ValidationSummary ID="ValidationSummary1" runat="server" CssClass="alert alert-danger" DisplayMode="List" ShowSummary="true" ValidationGroup="ValidateUser" /> 
    <fieldset class="form-horizontal">     
     <legend><asp:Literal runat="server" ID="litFirstName" /> <asp:Literal runat="server" ID="litLastName" /><asp:Literal runat="server" id="litLockedBadge" /></legend> <div class="control-group"> 
      <label class="control-label" for="inputEmail"> 
      <asp:CustomValidator ID="cvEmailAddress" runat="server" ValidationGroup="ValidateUser" Text="*" CssClass="required" ControlToValidate="txtEmailAddress" Display="Dynamic" OnServerValidate="cvValidateEmail" /> 
      <asp:RequiredFieldValidator runat="server" CssClass="required" Display="Dynamic" ControlToValidate="txtEmailAddress" Text="*" ErrorMessage="Email Address Required" ValidationGroup="ValidateUser" /> Email Address</label> 
       <div class="controls"> 
        <asp:Textbox Text="test" runat="server" id="txtEmailAddress" ClientIDMode="Static" CssClass="span3" />         
       </div> 
      </div> 
      <div class="control-group input-append"> 
       <label class="control-label" for="txtUserName"><asp:CustomValidator runat="server" ID="cvUserName" Text="*" CssClass="required" Display="Dynamic" OnServerValidate="cvValidateUserName" ValidationGroup="ValidateUser" /><asp:RequiredFieldValidator runat="server" Display="Dynamic" CssClass="required" ControlToValidate="txtUserName" Text="*" ErrorMessage="Username Required" ValidationGroup="ValidateUser" /> Username</label> 
        <div class="controls"> 
         <asp:Textbox Text="test" runat="server" id="txtUserName" ClientIDMode="Static" CssClass="span3" /> 
         <asp:LinkButton data-attr="email" ID="lnkEmailUsername" runat="server" CssClass="btn" OnClick="btn_ClickEmailUsername" ClientIDMode="Static"><i class="icon-envelope"></i></asp:LinkButton> 
        </div> 
       </div> 
       <div class="control-group"> 
        <label class="control-label" for="inputEmail"></label> 
        <div class="controls"> 
         <div class="btn-group"> 
          <asp:Button runat="server" ID="btnUnlockAccount" CssClass="btn" Text="Unlock Account" /> 
          <asp:Button runat="server" ID="btnResetPassword" CssClass="btn" Text="Reset Password" /> 
         </div> 
        </div> 
       </div> 
       <div class="control-group"> 
        <label class="control-label" for="inputEmail"></label> 
        <div class="controls">         
         <asp:Button runat="server" ID="btnSubmit" CssClass="btn btn-primary" Text="Update User Account" OnClick="btn_UpdateUserAccount" ValidationGroup="ValidateUser" /> 
        </div> 
       </div> 
      </fieldset> 

ValidationSummary에 표시 할 Validator의 오류 메시지 위해서는

//Validate the Username 
     protected void cvValidateUserName(object source, ServerValidateEventArgs args) 
     { 
      string userName = txtUserName.Text; 
      cvUserName.ErrorMessage = ""; 
      args.IsValid = true; 

      if (userName.Contains(" ")) 
      { 
       cvUserName.ErrorMessage = "Username cannot contain spaces. "; 
       cvUserName.IsValid = false; 
      } 

      if (userName.Length > 100 || userName.Length < 8) 
      { 
       cvUserName.ErrorMessage += "Username must be between 8 and 100 characters. "; 
       cvUserName.IsValid = false; 
       return; 
      } 

     } 

     //Validate Email Address 
     protected void cvValidateEmail(object source, ServerValidateEventArgs args) 
     { 
      var emailAddress = txtEmailAddress.Text; 

      try 
      { 
       new MailAddress(emailAddress); 
      } 
      catch (Exception) 
      { 
       args.IsValid = false; 
       return; 
      } 
     } 
+0

당신은 args.IsValid = true를 보내고 있습니다 만, catch 내에서 false로 설정하면됩니다. – Fals

+0

두 지점 모두에서 cvUserName.IsValid = false를 args.IsValid = false로 변경하십시오. – SeaSharp

+0

args.IsValid로 변경하고 customvalidator 내부의 모든 로직을 제거했습니다. 페이지가 페이지를 제출할 때 그것이 유효하지 않다고해도 ... –

답변

0

뒤에 코드, 당신은 ValidatorDisplay="none"를 설정해야합니다. 또한 Text=""을 설정합니다.

관련 문제