Asp.net

asp.net CustomValidator 從不觸發 OnServerValidate

  • February 13, 2015

我有以下 ASP 頁面:

<asp:Content ID="Content2" ContentPlaceHolderID="ShellContent" runat="server">
   <form runat="server" id="AddNewNoteForm" method="post"">

       <fieldset id="NoteContainer">
           <legend>Add New Note</legend>
           <asp:ValidationSummary ID="ValidationSummary1" runat="server" />
           <div class="ctrlHolder">
               <asp:Label ID="LabelNoteDate" runat="server" Text="Note Date" 
                   AssociatedControlID="NoteDateTextBox"></asp:Label>
               <asp:TextBox ID="NoteDateTextBox" runat="server" class="textInput" 
                   CausesValidation="True" ></asp:TextBox>
               <asp:CustomValidator 
                       ID="CustomValidator1" 
                       runat="server" 
                       ErrorMessage="CustomValidator" 
                       ControlToValidate="NoteDateTextBox" 
                       OnServerValidate="CustomValidator1_ServerValidate" 
                       Display="Dynamic" 
                       >*</asp:CustomValidator>
           </div>
           <div class="ctrlHolder">
               <asp:Label ID="LabelNoteText" AssociatedControlID="NoteTextTextBox" runat="server" Text="Note"></asp:Label>
               <asp:TextBox ID="NoteTextTextBox" runat="server" Height="102px" 
                   TextMode="MultiLine" class="textInput" ></asp:TextBox>
               <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                   ErrorMessage="Note Text is Required" ControlToValidate="NoteTextTextBox">*</asp:RequiredFieldValidator>   

           </div>
           <div class="buttonHolder">
               <asp:Button ID="OkButton" runat="server" Text="Add New Note"  
                   CssClass="primaryAction" onclick="OkButton_Click"/>
               <asp:HyperLink ID="HyperLink1" runat="server">Cancel</asp:HyperLink>
           </div>
       </fieldset>
   </form>
</asp:Content>

以及 CustomValidator1_ServerValidate() 方法的以下程式碼:

   protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
   {

       if (string.IsNullOrEmpty(args.Value.Trim()))
       {
           args.IsValid = false;
           CustomValidator1.ErrorMessage = "Note Date is Required!";
           return;
       }

       DateTime testDate;
       if (DateTime.TryParse(args.Value, out testDate))
       {
           args.IsValid = true;
           CustomValidator1.ErrorMessage = "Invalid Date!";
       }

   }

無論我在文本框中輸入什麼,它似乎都不會失敗驗證……

應該提到這是 ASP.NET 2.0

為了使用 customvalidator,您還需要該控制項的 requiredfieldvalidator。只需為 NoteDateTextBox 添加一個 requiredfieldvalidator,它就會為您觸發 customvalidator 的伺服器事件。

當您測試文本框是否為空時,請在 CustomValidator 上使用此 ValidateEmptyText=“true”。

否則必填欄位驗證將不起作用。

引用自:https://stackoverflow.com/questions/1651155