我在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" />
答案 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".
如果您的电子邮件文本框名称是用户名,则可以正确验证正确的文本框。