首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个ValidationSummary和RequiredFieldValidators

多个ValidationSummary和RequiredFieldValidators
EN

Stack Overflow用户
提问于 2014-07-02 22:47:34
回答 2查看 324关注 0票数 0

我的页面上有两个验证组,分别叫做"login“和"register”。每个组都有自己的ValidationSummary控件,还有一些RequiredFieldValidators。我遇到的问题是,表单验证的是两个组,而不是只验证一个组。

下面是代码(为了简化,我省略了很多HTML ):

代码语言:javascript
复制
<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”,但似乎没有效果。

EN

回答 2

Stack Overflow用户

发布于 2014-07-02 23:11:35

在你的CodeBehind上,你可以这样做...

代码语言:javascript
复制
Page.Validate("register");
if (Page.IsValid)
  {
      //Keep calm and carry on
  }

else
   {
       foreach (BaseValidator invalidField in validators)
            {  
              //Do something with the invalid fields 
            }
    }

这样,您只需验证您指定的组。

合乎道理?

票数 0
EN

Stack Overflow用户

发布于 2014-07-02 23:16:38

你的问题是Display="None"

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24534219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档