【问题标题】:Validate multiple controls Asp.Net验证多个控件 Asp.Net
【发布时间】:2012-02-25 07:51:53
【问题描述】:

所以,我在一个页面上有一个登录框和一个注册框。两者都有RequiredField 验证器。现在,当我点击登录或注册时,注册和登录的字段都会得到验证。

但是,我想要它,如果单击注册,则仅验证注册字段,如果单击登录,则验证登录字段。

你能帮帮我吗?

非常感谢!

【问题讨论】:

    标签: c# asp.net .net validation webforms


    【解决方案1】:

    正如 Dooie 所说,您必须像这样分配验证组

           <table width="100%"> 
           <tr> 
              <td> 
                    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
                    <asp:RequiredFieldValidator 
       ID="RequiredFieldValidator1" runat="server" 
       ErrorMessage="RequiredFieldValidator" 
       ValidationGroup="Group1" ControlToValidate="TextBox1"> 
        </asp:RequiredFieldValidator> 
               </td>            
               </tr> 
            <tr> 
                <td> 
                    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
                    <asp:RequiredFieldValidator 
         ID="RequiredFieldValidator2" runat="server" 
          ErrorMessage="RequiredFieldValidator" 
          ValidationGroup="Group2" ControlToValidate="TextBox2"> 
          </asp:RequiredFieldValidator> 
                </td> 
             </tr> 
            <tr> 
                <td> 
                       <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>  
         <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"                                                
        ValidationGroup="Group3" ControlToValidate="TextBox3"> 
       </asp:RequiredFieldValidator> 
               </td> 
            </tr> 
            <tr> 
             <td> 
                  <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox> 
                   <asp:RequiredFieldValidator 
                    ID="RequiredFieldValidator4" runat="server"       ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBox4">  
                      </asp:RequiredFieldValidator>             
               </td> 
           </tr> 
          <tr> 
               <td> 
                    <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="javascript:return   validatePage();" /> 
                   <asp:Button ID="btnCancel" runat="server" Text="Cancel" /> 
               </td> 
           </tr> 
    

    为您的所有验证,然后.... 从上面的标记可以看出,有四个必填字段验证器,并且在四个验证器中,三个验证器定义了验证组属性。在这种情况下,当您单击提交按钮时,只会执行没有验证组的验证器,即只执行RequiredFiedlValidator4。由于有多个验证组分配按钮'ValidationGroup 不会工作,因为它只会执行属于分配的验证组的验证器控件。属于其他验证组的其他验证器控件不会执行。此外,无法使用按钮控件的 ValidationGroup 属性指定多个验证组。

    解决这个问题的方法是调用Page_ClientValidate javascript函数。 Page_ClientValidate 是一个由 ASP.NET 生成的 javascript 函数。该函数将验证组名称作为参数。点击提交按钮时调用的javascript函数粘贴在下面。

             <script language="javascript" type="text/javascript"> 
          function validatePage() 
          { 
      //Executes all the validation controls associated with group1 validaiton Group1. 
        var flag = Page_ClientValidate('Group1'); 
       if (flag) 
       //Executes all the validation controls associated with group1 validaiton Group2. 
            flag = Page_ClientValidate('Group2'); 
        if (flag) 
       //Executes all the validation controls associated with group1 validaiton Group3. 
           flag = Page_ClientValidate('Group3'); 
      if (flag) 
       //Executes all the validation controls which are not associated with any validation group. 
          flag = Page_ClientValidate(); 
        return flag; 
         } 
     </script>
    

    希望这会有所帮助.......

    【讨论】:

      【解决方案2】:

      将 ValidationGroup="SignUp" 分配给注册验证器和按钮,将 ValidationGroup="Login" 分配给登录验证器和按钮

      当您这样做时,只会触发同一组中的验证

      【讨论】:

        猜你喜欢
        • 2011-02-22
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 2015-04-21
        • 2023-03-20
        • 2012-10-28
        • 1970-01-01
        相关资源
        最近更新 更多