Добавление валидаторов Regex с помощью CreateUserWizard они не работают
Я добавляю некоторые регулярные выражения с шагами регистрации пользователя, они работают, потому что*
", но мастер все равно позволит мне создать учетную запись с ошибками регулярных выражений.
- Я пытался повторить мастер
- Изменение некоторых функций, но ничего
,
Исходный текст страницы
<asp:CreateUserWizard ID="RegisterUser" runat="server" CssClass="gridviewUsers"
oncreateduser="RegisterUser_CreatedUser1">
<WizardSteps>
<asp:CreateUserWizardStep runat="server">
<ContentTemplate>
<table>
<tr>
<td align="center" colspan="2">
Sign Up for Your New Account</td>
</tr>
<tr>
<td align="right">
<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label>
</td>
<td>
<asp:TextBox ID="UserName" runat="server"
ToolTip="The Username that you will need to login later eg "john123""></asp:TextBox>
<asp:RequiredFieldValidator ID="rv1_1" runat="server"
ControlToValidate="UserName" ErrorMessage="User Name is required."
ForeColor="Red" ToolTip="User Name is required."
ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="rv1_2" runat="server"
ControlToValidate="UserName" ErrorMessage="Not a valid Username"
ForeColor="Red" ValidationExpression="^[a-z0-9_-]{3,15}$"
ValidationGroup="CreateUserWizard1">*</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td align="right">
<asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
</td>
<td>
<asp:TextBox ID="Password" runat="server" TextMode="Password"
ToolTip="The password for the selected username eg"123456""></asp:TextBox>
<asp:RequiredFieldValidator ID="rv2_1" runat="server"
ControlToValidate="Password" ErrorMessage="Password is required."
ForeColor="Red" ToolTip="Password is required."
ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="rv2_2" runat="server"
ControlToValidate="Password"
ErrorMessage="Invalid Password Please enter a valid password rg"pass12""
ForeColor="Red" ValidationExpression="^[A-Za-z0-9]+$"
ValidationGroup="CreateUserWizard1">*</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td align="right">
<asp:Label ID="ConfirmPasswordLabel" runat="server"
AssociatedControlID="ConfirmPassword">Confirm Password:</asp:Label>
</td>
<td>
<asp:TextBox ID="ConfirmPassword" runat="server" TextMode="Password"
ToolTip="Must enter the same password as above to confirm password"></asp:TextBox>
<asp:RequiredFieldValidator ID="rv3_1" runat="server"
ControlToValidate="ConfirmPassword"
ErrorMessage="Confirm Password is required." ForeColor="Red"
ToolTip="Confirm Password is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="rv3_2" runat="server"
ControlToValidate="ConfirmPassword"
ErrorMessage="Invalid Password Please enter a valid password rg"pass12""
ForeColor="Red" ValidationExpression="^[A-Za-z0-9]+$"
ValidationGroup="CreateUserWizard1">*</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td align="right">
<asp:Label ID="EmailLabel" runat="server" AssociatedControlID="Email">E-mail:</asp:Label>
</td>
<td>
<asp:TextBox ID="Email" runat="server"
ToolTip="The email on which we will use to contact you!"></asp:TextBox>
<asp:RequiredFieldValidator ID="rv4_1" runat="server" ControlToValidate="Email"
ErrorMessage="E-mail is required." ForeColor="Red"
ToolTip="E-mail is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="rv4_2" runat="server"
ControlToValidate="Email" ErrorMessage="Email invalid format" ForeColor="Red"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
ValidationGroup="CreateUserWizard1">*</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td align="right">
</td>
<td>
</td>
</tr>
<tr>
<td align="right">
</td>
<td>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<asp:CompareValidator ID="PasswordCompare" runat="server"
ControlToCompare="Password" ControlToValidate="ConfirmPassword"
Display="Dynamic"
ErrorMessage="The Password and Confirmation Password must match."
ForeColor="Red" ValidationGroup="CreateUserWizard1"></asp:CompareValidator>
</td>
</tr>
<tr>
<td align="center" colspan="2" style="color:Red;">
<asp:Literal ID="ErrorMessage" runat="server" EnableViewState="False"></asp:Literal>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" />
</td>
</tr>
</table>
</ContentTemplate>
</asp:CreateUserWizardStep>
<asp:CompleteWizardStep runat="server" />
</WizardSteps>
</asp:CreateUserWizard>
Aspx File
protected void RegisterUser_CreatedUser(object sender, EventArgs e)
{
if (CheckUsername() != true)
{
Roles.AddUserToRole(RegisterUser.UserName, "Pre-Member");
FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);
string continueUrl = RegisterUser.ContinueDestinationPageUrl;
if (String.IsNullOrEmpty(continueUrl))
{
continueUrl = "~/Account/InsertingUserDetails.aspx";
}
Response.Redirect(continueUrl);
}
else
{
RegisterUser.UserNameRequiredErrorMessage = "User already taken";
}
}
2 ответа
Предполагая, что ваш мастер создания использования выглядит следующим образом
<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" OnCreatedUser="CreateUserWizard1_CreatedUser"
DisableCreatedUser="true" EmailRegularExpression="^((?:(?:(?:\w[\.\-\+]?)*)\w)+)\@((?:(?:(?:\w[\.\-\+]?){0,62})\w)+)\.(\w{2,4})$"
Font-Size="Small">
<CreateUserButtonStyle CssClass="button" />
<ErrorMessageStyle Font-Size="Small" />
<TextBoxStyle CssClass="textbox txtsingleline" />
<ValidatorTextStyle Font-Size="Small" />
<WizardSteps>
<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
</asp:CreateUserWizardStep>
<asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server">
</asp:CompleteWizardStep>
</WizardSteps>
</asp:CreateUserWizard>
Вы можете получить доступ к валидаторам следующим образом:
(RequiredFieldValidator)((CreateUserWizardStep)CreateUserWizard1.FindControl("CreateUserWizardStep1")).ContentTemplateContainer.FindControl("UserNameRequired")
(RequiredFieldValidator)((CreateUserWizardStep)CreateUserWizard1.FindControl("CreateUserWizardStep1")).ContentTemplateContainer.FindControl("PasswordRequired")
(RequiredFieldValidator)((CreateUserWizardStep)CreateUserWizard1.FindControl("CreateUserWizardStep1")).ContentTemplateContainer.FindControl("ConfirmPasswordRequired")
(RequiredFieldValidator)((CreateUserWizardStep)CreateUserWizard1.FindControl("CreateUserWizardStep1")).ContentTemplateContainer.FindControl("EmailRequired")
(CompareValidator)((CreateUserWizardStep)CreateUserWizard1.FindControl("CreateUserWizardStep1")).ContentTemplateContainer.FindControl("PasswordCompare")
(RegularExpressionValidator)((CreateUserWizardStep)CreateUserWizard1.FindControl("CreateUserWizardStep1")).ContentTemplateContainer.FindControl("EmailRegExp")
Надеюсь, это поможет Спасибо:)
Используйте правильный идентификатор для ValidationGroup. Должно быть "RegisterUser" вместо "CreateUserWizard1"