设置textmode属性会使validationgroup被忽略

时间:2019-07-14 18:54:26

标签: asp.net

我目前正在私人时间开发CMS,以了解有关asp.net的更多信息。 现在,我的页面上有两种形式。登录表单和让您订阅邮件列表的表单。两者都可以正常工作,并且都具有独立的验证组,可以防止在单击其他表单按钮时触发所需的字段验证器。

我在需要电子邮件的所有字段上执行此操作

<asp:TextBox TextMode="Email" ValidationGroup="toplogin" placeholder="Email..." ID="emailTB" runat="server">

每个文本框都具有这样的必填字段验证器

<asp:RequiredFieldValidator runat="server" ControlToValidate="emailTb" ValidationGroup="toplogin" SetFocusOnError="true" ErrorMessage="Please enter your email address"></asp:RequiredFieldValidator>

最后,每个表单都有一个类似的按钮

<asp:Button ID="topLogBtn" ValidationGroup="toplogin" runat="server" Text="Log In!" OnClick="topLogBtn_Click" />

因此,当文本框的文本模式设置为Email时,就会发生此问题。如果在登录表单的电子邮件文本框中输入了无效数据,并且单击了订阅表单的按钮,它将告诉用户即使在单独的验证组中,也请在登录表单中输入有效的电子邮件地址。

在添加验证组之前,我遇到了这个问题,我认为他们可以解决问题,但事实并非如此。有谁知道如何解决这个问题?如果登录表单文本框为空,则不会发生此问题。

这是订阅表单的代码。

<div ID="newsform" class="news-form" runat="server">
                <div class="news-form-item"><asp:TextBox ID="newsNameTb" placeholder="Name..."  ValidationGroup="newsletter" runat="server"></asp:TextBox>&nbsp;<asp:RequiredFieldValidator runat="server" ControlToValidate="newsNameTb" Display="Dynamic" ValidationGroup="newsletter" SetFocusOnError="true" ErrorMessage="Name Required"></asp:RequiredFieldValidator></div>
                <div class="news-form-item"><asp:TextBox ID="newsEmailTb" placeholder="Email..." TextMode="Email" ValidationGroup="newsletter" runat="server"></asp:TextBox>&nbsp;<asp:RequiredFieldValidator runat="server" ControlToValidate="newsEmailTb" Display="Dynamic" ValidationGroup="newsletter" SetFocusOnError="true" ErrorMessage="Email Required"></asp:RequiredFieldValidator></div>
                <div class="news-form-item"><asp:Button ID="newsEmailBtn" runat="server" ValidationGroup="newsletter" OnClick="newsEmailBtn_Click" Text="Subscribe!"></asp:Button></div>              
            </div>

0 个答案:

没有答案