0

login control在 asp.net 中使用。
我正在使用电子邮件 ID 而不是用户名登录。
那工作正常。
我正在通过使用<asp:RegularExpressionValidator />控件验证电子邮件 ID 文本框来检查电子邮件 ID。
我将ControlToValidate属性作为 emailid 文本框的 id。
当我单击登录按钮时,它正在验证并显示错误消息Email should be in correct format
但这并没有停止在这里登录。
它正在尝试使用错误的电子邮件 ID 文本框值和密码登录,并说明You are not register user当用户仅以正确格式输入电子邮件 ID 时应该发生的情况。
简单来说,登录控制进行

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)

事件,即使正则表达式验证器说电子邮件格式不正确。

如何停止登录控件的这种登录行为?

这是我的正则表达式:

<asp:RegularExpressionValidator ID="emaildValidate" runat="server" 
     ErrorMessage="Email should be in correct format" 
     SetFocusOnError="True" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
     ControlToValidate="UserName" ValidationGroup="Login1">
</asp:RegularExpressionValidator>

按钮 HTML

<asp:Button ID="LoginButton" CssClass="loginbutton" runat="server" CommandName="Login"
                                        Text="Sign In" ValidationGroup="Login1" OnClick="LoginButton_Click" />
4

2 回答 2

2

这是我的登录控制,它对我来说很好,检查你的

<asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false">
        <LayoutTemplate>
            <span class="failureNotification">
                <asp:Literal ID="FailureText" runat="server"></asp:Literal>
            </span>
            <asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification" 
                 ValidationGroup="LoginUserValidationGroup"/>
            <div class="accountInfo">
                <fieldset class="login">
                    <legend>Account Information</legend>
                    <p>
                        <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Email:</asp:Label>
                        <asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" 
                             CssClass="failureNotification" ErrorMessage="User Name is required." ToolTip="User Name is required." 
                             ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                             <asp:RegularExpressionValidator ID="emaildValidate" runat="server" 
     ErrorMessage="Email should be in correct format" 
     SetFocusOnError="True" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
     ControlToValidate="UserName" ValidationGroup="LoginUserValidationGroup">
</asp:RegularExpressionValidator>
                    </p>
                    <p>
                        <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
                        <asp:TextBox ID="Password" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" 
                             CssClass="failureNotification" ErrorMessage="Password is required." ToolTip="Password is required." 
                             ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                    </p>
                    <p>
                        <asp:CheckBox ID="RememberMe" runat="server"/>
                        <asp:Label ID="RememberMeLabel" runat="server" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label>
                    </p>
                </fieldset>
                <p class="submitButton">
                    <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup"/>
                </p>
            </div>
        </LayoutTemplate>
    </asp:Login>
于 2013-02-11T12:52:25.940 回答
0

您提到您正在验证您emailid不是username但在您的必填字段验证器中

    ControlToValidate="UserName".

如果您的电子邮件文本框名称是用户名,那么可以验证正确的文本框。

于 2013-02-11T12:09:31.250 回答