ASP CreateUserWizard成员资格提供程序注册用户验证

时间:2010-05-13 14:54:29

标签: c# asp.net umbraco membership-provider createuserwizard

我是ASP和C#世界的新手,我刚刚使用CreateUserWizard Membership Provider创建了我的第一个注册表单,并从“用户名”设置了效果很好的验证器。如果获取用户名,页面只是刷新并且如果somone可以指出我可能出错的地方,则不会出现任何错误。

这是我目前的代码:

SCRIPT

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
    /* User is created and setting extra parameters to profile */
    TextBox UserNameTextBox = (TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName");
    string username = UserNameTextBox.Text;

    MembershipUser User = Membership.GetUser(username);
    umbraco.cms.businesslogic.member.Member member = new umbraco.cms.businesslogic.member.Member((int)User.ProviderUserKey);

    /* Here you can access properties for the member */
    umbraco.cms.businesslogic.property.Property FullNameProperty = member.getProperty("fullname"); // Property alias
    TextBox FullNameTextBox = (TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("FullName");
    FullNameProperty.Value = FullNameTextBox.Text;

    Roles.AddUserToRole(CreateUserWizard1.UserName, "NuneatonMember");
}
protected void CreateUserWizard1_ContinueButtonClick(object sender, EventArgs e)
{
    Response.Redirect("/member-area.aspx");
}

CONTENT

<form runat="server">
 <asp:CreateUserWizard ID="CreateUserWizard1" OnContinueButtonClick="CreateUserWizard1_ContinueButtonClick" OnCreatedUser="CreateUserWizard1_CreatedUser" runat="server">
     <WizardSteps>
         <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
   <ContentTemplate>

    First Name :<asp:TextBox Runat="server" ID="FullName" CssClass="user_info"></asp:TextBox>
    <asp:RequiredFieldValidator ID="FullNameVal" runat="server" ControlToValidate="FullName" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
    <br/>

    Last Name :<asp:TextBox Runat="server" ID="LastName" CssClass="user_info"></asp:TextBox>
    <asp:RequiredFieldValidator ID="LastNameVal" runat="server" ControlToValidate="LastName" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
    <br/>

    Username :<asp:TextBox Runat="server" ID="UserName" CssClass="user_info"></asp:TextBox>
    <asp:RequiredFieldValidator ID="UserNameVal" runat="server" ControlToValidate="UserName" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
    <br/>

    E-mail :<asp:TextBox Runat="server" ID="Email" CssClass="user_info"></asp:TextBox>
    <asp:RequiredFieldValidator ID="EmailVal" runat="server" ControlToValidate="Email" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
    <asp:RegularExpressionValidator id="valRegEx" runat="server" ControlToValidate="Email" ValidationExpression=".*@.*\..*" ErrorMessage="* is not a valid e-mail address." ValidationGroup="CreateUserWizard1" display="dynamic"></asp:RegularExpressionValidator>
    <br/>

    Password :<asp:TextBox Runat="server" ID="Password" CssClass="user_info"></asp:TextBox>
    <asp:RequiredFieldValidator ID="PasswordVal" runat="server" ControlToValidate="Password" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
    <br/>

    Confirm Password :<asp:TextBox Runat="server" ID="ConfirmPassword" CssClass="user_info"></asp:TextBox>
    <asp:RequiredFieldValidator ID="PConfirmVal" runat="server" ControlToValidate="ConfirmPassword" Display="Dynamic" ErrorMessage="RequiredFieldValidator" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
    <br/>

    <asp:CompareValidator ID="PasswordCompare" runat="server" ControlToCompare="Password" ControlToValidate="ConfirmPassword" Display="Dynamic" ValidationGroup="CreateUserWizard1" ErrorMessage="Foul: Password and Confirmation Password do not match. Fix them."></asp:CompareValidator>

    <asp:literal runat="server" enableviewstate="true" id="FailureText"></asp:literal>

   </ContentTemplate>
  </asp:CreateUserWizardStep>
         <asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server"></asp:CompleteWizardStep>
     </WizardSteps>
</asp:CreateUserWizard> 

1 个答案:

答案 0 :(得分:1)

您需要添加错误处理程序。

<asp:CreateUserWizard ID="CreateUserWizard1" 
      OnContinueButtonClick="CreateUserWizard1_ContinueButtonClick"  
      OnCreatedUser="CreateUserWizard1_CreatedUser" runat="server" 
      OnCreateUserError="createUserWizard_CreateUserError">

以及如何实施它的示例。

protected void createUserWizard_CreateUserError(object sender, CreateUserErrorEventArgs arguments)
{
    LogCreateUserError(arguments.CreateUserError, "no user info");
}

 private void LogCreateUserError(MembershipCreateStatus status, string username)
{
    string reasonText = status.ToString();

    switch (status)
    {
        case MembershipCreateStatus.DuplicateEmail:
        case MembershipCreateStatus.DuplicateProviderUserKey:
        case MembershipCreateStatus.DuplicateUserName:

            reasonText = "The user details you entered are already registered.";
            break;

        case MembershipCreateStatus.InvalidAnswer:
        case MembershipCreateStatus.InvalidEmail:
        case MembershipCreateStatus.InvalidProviderUserKey:
        case MembershipCreateStatus.InvalidQuestion:
        case MembershipCreateStatus.InvalidUserName:
        case MembershipCreateStatus.InvalidPassword:

            reasonText = string.Format("The {0} provided was invalid.", status.ToString().Substring(7));
            break;
        default:
            reasonText = "Due to an unknown problem, we were not able to register you at this time";
            break;

    }
   //DO whatever with it.. ....

}