使用CreateUserWizard添加正则表达式验证器它们不起作用

时间:2012-05-15 16:43:44

标签: c# asp.net regex createuserwizard

我正在使用注册用户步骤添加一些正则表达式,它们正在工作,因为正在显示“*”但是向导仍然会让我创建一个包含正则表达式错误的帐户。

  1. 我尝试重做向导
  2. 更改某些功能但没有任何内容
  3. 页面来源

    <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 &quot;john123&quot;"></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&quot;123456&quot;"></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&quot;pass12&quot;" 
                                        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&quot;pass12&quot;" 
                                        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">
                                    &nbsp;</td>
                                <td>
                                    &nbsp;</td>
                            </tr>
                            <tr>
                                <td align="right">
                                    &nbsp;</td>
                                <td>
                                    &nbsp;</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文件

     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 个答案:

答案 0 :(得分:1)

假设您的“创建使用”向导看起来像这样

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

希望这会有所帮助 谢谢:)

答案 1 :(得分:0)

使用ValidationGroup的正确ID。 应该是“RegisterUser”而不是“CreateUserWizard1”