ASP CreateUserWizardメンバーシッププロバイダー登録ユーザー検証
-
26-09-2019 - |
質問
ASPとC#の世界の初心者であるIMは、CreateUserWizardメンバーシッププロバイダーを使用して最初の登録フォームを作成し、「ユーザー名」から優れたアパートを機能させるバリデーターを設定しました。ユーザー名が取得された場合、ページは単にリフレッシュし、エラーが表示されないことは、Somoneが私がどこで間違っているのかを指摘できれば、本当に非常に大きなものになります。
これが私の現在のコードです:
脚本
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");
}
コンテンツ
<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>
解決
エラーハンドラーを追加する必要があります。
<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.. ....
}
所属していません StackOverflow