CreateUserWizard - 添加步骤,但在完成所有步骤之前不要创建用户

时间:2011-06-14 21:21:38

标签: asp.net asp.net-membership createuserwizard

我想利用ootb ASP.NET2.0 MembershipProvider CreateUserWizard控件,通过一些自定义来添加第二步。

问题在于,如果我的第一步是类型<asp:CreateUserWizardStep...>而我的第二步是<asp:WizardStep...>,那么用户实际上是在用户从第一步点击之后到达第二步之前立即创建的步骤

这是我正在使用的(非常)基本控件:

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server">
   <WizardSteps>
      <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
      </asp:CreateUserWizardStep>
      <asp:WizardStep runat="server" Title="License Step">
      </asp:WizardStep>
      <asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server">
      </asp:CompleteWizardStep>
   </WizardSteps>
</asp:CreateUserWizard>

在创建用户之前,是否要告诉控件等待所有步骤完成?

1 个答案:

答案 0 :(得分:8)

我遇到了同样的问题。

似乎没有其他方法可以将CreateUserWizard与您想要的顺序一起使用:

Step 1. User Creation 

Step 2. License Step etc.

在CreateUserWizardStep之后,数据将始终写入数据库,除非您覆盖CreateUserWizard类。

如果您按照Erich Peterson在4GuysFromRolla网站上公布的步骤的顺序进行反转,即步骤1.许可证步骤,步骤2. ...步骤3.用户创建。

<强>更新

我找到了一个可能有用的相关post。简而言之:

如果要阻止CreateUserWizard的CreateUser步骤创建用户,可以尝试处理CreatingUser事件并将其LoginCancelEventArgs.Cancel属性设置为true。

示例代码:

protected void RegisterUser_CreatingUser(object sender, LoginCancelEventArgs e) 
{
 e.Cancel = true; 
} 

然后,为了移动到向导中的下一页,您需要处理NextButtonClick事件:

  1. 添加e.Cancel = False;
  2. 添加CreateUserWizard.ActiveStepIndex =(您的下一个向导步骤索引);
  3. 之后,您需要手动创建用户,例如在FinishButtonClick事件处理程序中。

    我还没有尝试过,但它应该有效。 希望它有所帮助。