Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 多个ValidationSummary和RequiredFieldValidator_Asp.net - Fatal编程技术网

Asp.net 多个ValidationSummary和RequiredFieldValidator

Asp.net 多个ValidationSummary和RequiredFieldValidator,asp.net,Asp.net,我的页面上有两个验证组,分别是login和register。每个组都有自己的ValidationSummary控件,并且还有许多RequiredFieldValidator。我遇到的问题是表单正在验证两个组,而不仅仅是一个组 以下是我省略了大量HTML以简化的代码: <div id="divRegisterBox"> <asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup=

我的页面上有两个验证组,分别是login和register。每个组都有自己的ValidationSummary控件,并且还有许多RequiredFieldValidator。我遇到的问题是表单正在验证两个组,而不仅仅是一个组

以下是我省略了大量HTML以简化的代码:

<div id="divRegisterBox">

  <asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="register" />

  <asp:TextBox ID="tbRegisterEmail" runat="server" CssClass="form-control" placeholder="Required" ValidationGroup="register" />
  <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="tbRegisterEmail" runat="server" Text="" ErrorMessage="Please enter your email address." ValidationGroup="register" />
  <asp:RegularExpressionValidator ID="RegularExpressionValidator1" CssClass="errorMsg" ControlToValidate="tbRegisterEmail" runat="server" Text="" ErrorMessage="Please enter a valid email address." ValidationExpression="^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$" ValidationGroup="register" />

  <asp:TextBox ID="tbRegisterPassword" name="result-password" runat="server" CssClass="form-control" placeholder="Required" TextMode="Password" ValidationGroup="register" />
  <asp:RequiredFieldValidator ID="RequiredFieldValidator2" CssClass="errorMsg" ControlToValidate="tbRegisterPassword" runat="server" Text="" ErrorMessage="Please enter your password." ValidationGroup="register" />

  <asp:Button ID="btnMobileRegister" runat="server" Text="Register" OnClick="btnMobileRegister_Click" ValidationGroup="register" />

</div>

<div id="divLoginBox">

  <asp:ValidationSummary ID="ValidationSummary2" runat="server" ValidationGroup="login" />

  <asp:TextBox CssClass="form-control" name="result-email" ID="tbResultEmail" placeholder="Required" runat="server" ValidationGroup="login"></asp:TextBox>
  <asp:RequiredFieldValidator ID="RequiredFieldValidator3" ControlToValidate="tbResultEmail" runat="server" Text="" ErrorMessage="Please enter your email address." ValidationGroup="login" CssClass="errorMsg" />
  <asp:RegularExpressionValidator ID="RegularExpressionValidator2" CssClass="errorMsg" ControlToValidate="tbResultEmail" runat="server" Text="" ErrorMessage="Please enter a valid email address." ValidationExpression="^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$" ValidationGroup="login" />

  <asp:TextBox CssClass="form-control" name="result-password" ID="tbResultPassword" placeholder="Required" TextMode="Password" runat="server" ValidationGroup="login"></asp:TextBox>
  <asp:RequiredFieldValidator ID="RequiredFieldValidator4" CssClass="errorMsg" ControlToValidate="tbResultPassword" runat="server" Text="" ErrorMessage="Please enter your password." ValidationGroup="login" />

  <asp:Button ID="btnLoginMobile" runat="server" CssClass="btn btn-primary btn-block" Text="Login" OnClientClick="return MobileLoginSubmit();" ValidationGroup="login" OnClick="btnLoginMobile_Click" />

</div>
单击任一按钮控件时,ValidationSummary控件将显示页面上所有验证控件的验证消息。这就好像他们都是同一个验证组的一部分


我尝试在按钮中添加CausesValidation=true和false,但似乎没有效果。

在CodeBehind上,您可以执行以下操作

Page.Validate("register");
if (Page.IsValid)
  {
      //Keep calm and carry on
  }

else
   {
       foreach (BaseValidator invalidField in validators)
            {  
              //Do something with the invalid fields 
            }
    }
这样,您只需验证您指定的组

有意义吗?

您的问题是Display=None

在divRegisterBox div中,验证器都有Display=None,但divLoginBox div中的验证器没有


Display=None将不以内联方式显示消息。单击“登录”按钮时,您看到的不是两个摘要都在显示,而是相同的错误消息以两种不同的方式显示。

不会触发回发,因此不会使用代码隐藏。RequiredFieldValidator似乎在客户端工作。请注意,您能否将每个区域包装在UpdatePanel元素中以将它们彼此隔离?我已删除display=none,但它没有任何区别。您需要将其添加到没有它的验证器中,没有将其从那些已删除的控件中删除。好的,我尝试将其添加到所有验证控件中,但再次得到相同的结果。好的,我按原样复制了您的代码,将Display=None添加到验证程序中,并按预期工作。您是否100%确定显示了所有验证消息?如中所示……如果没有填写任何字段,并且您单击一个按钮,您会在一个摘要中看到总共四条消息?