如何使用正则表达式验证程序在电子邮件ID错误时停止登录按钮功能

时间:2013-02-11 11:09:00

标签: c# asp.net login membership

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

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" />

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

    ControlToValidate="UserName".

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