CreateUserWizard не запускает CompleteWizardStep
У меня есть пользовательский CreateUserWizard, в котором пользователь дает свой адрес электронной почты в качестве имени пользователя. Этот код не будет запускать CompleteWizardStep1. Я получаю сообщение об успехе, но шаблон членства все еще активен и продолжает только попытку создания другого пользователя.
<fieldset>
<legend>Create a User Account</legend>
<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" AutoGeneratePassword="False"
BackColor="#F7F6F3" BorderColor="#E6E2D8" BorderStyle="Solid" BorderWidth="1px"
CancelDestinationPageUrl="~/" ContinueDestinationPageUrl="~/CustomerDetails.aspx"
CreateUserButtonText="Continue" Font-Names="Verdana" Font-Size="0.8em"
OnCreatingUser="CreateUserWizard1_CreatingUser">
<SideBarStyle BackColor="#5D7B9D" BorderWidth="0px" Font-Size="0.9em"
VerticalAlign="Top" />
<SideBarButtonStyle BorderWidth="0px" Font-Names="Verdana" ForeColor="White" />
<ContinueButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC"
BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana"
ForeColor="#284775" />
<NavigationButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC"
BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana"
ForeColor="#284775" />
<HeaderStyle BackColor="#5D7B9D" BorderStyle="Solid" Font-Bold="True"
Font-Size="0.9em" ForeColor="White" HorizontalAlign="Center" />
<CreateUserButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC"
BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana"
ForeColor="#284775" />
<TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<StepStyle BorderWidth="0px" />
<WizardSteps>
<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server" >
<ContentTemplate>
<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Email Address:</asp:Label><br />
<asp:TextBox ID="UserName" runat="server" MaxLength="32"></asp:TextBox>
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" EnableClientScript="true"
ErrorMessage="Email address is required." ToolTip="Email address is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="regEmail" ControlToValidate="UserName" Text="Invalid e-mail" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" Runat="server" /><br />
<asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label><br />
<asp:TextBox ID="Password" runat="server" TextMode="Password"
MaxLength="16"></asp:TextBox>
<asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" EnableClientScript="true"
ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator><br />
<asp:Label ID="ConfirmPasswordLabel" runat="server" AssociatedControlID="ConfirmPassword">Confirm Password:</asp:Label><br />
<asp:TextBox ID="ConfirmPassword" runat="server" TextMode="Password"
MaxLength="16"></asp:TextBox>
<asp:RequiredFieldValidator ID="ConfirmPasswordRequired" runat="server" ControlToValidate="ConfirmPassword" EnableClientScript="true"
ErrorMessage="Confirm Password is required." ToolTip="Confirm Password is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator><br />
<asp:CompareValidator ID="PasswordCompare" runat="server" ControlToCompare="Password"
ControlToValidate="ConfirmPassword" Display="Dynamic" ErrorMessage="The Password and Confirmation Password must match."
ValidationGroup="CreateUserWizard1"></asp:CompareValidator>
<asp:TextBox ID="Email" runat="server" Visible="false" MaxLength="1"></asp:TextBox>
</ContentTemplate>
</asp:CreateUserWizardStep>
<asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server" >
</asp:CompleteWizardStep>
</WizardSteps>
</asp:CreateUserWizard>
<p align="center">
<asp:Label ID="ActionStatus" runat="server" CssClass="Important"></asp:Label>
</p>
</fieldset>
protected void CreateUserWizard1_CreatingUser(object sender, LoginCancelEventArgs e)
{
Page.Validate("CreateUserWizard1");
if (!Page.IsValid)
{
return;
}
CreateUserWizard cuw = (CreateUserWizard)sender;
cuw.Email = cuw.UserName;
// Make sure that the user doesn't already belong to this role
if (Roles.IsUserInRole(cuw.UserName, "Customers"))
{
ActionStatus.Text = string.Format("User {0} already is a member.", cuw.UserName);
return;
}
Roles.AddUserToRole(cuw.UserName, "Customers");
// Display a status message
ActionStatus.Text = string.Format("User {0} was added.", cuw.UserName);
}
1 ответ
Решение
Я рад, что никто не потратил впустую свое время, пытаясь проработать мой код.
Оказывается, это было requireUniqueEmail="false", которое должно было присутствовать в моем AspNetSqlMembershipProvider. Он был установлен на "true", и код никогда не проходил мимо него.
Спасибо за посещение и приветствует ваши намерения.