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

QMK*_*vin 10 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>
Run Code Online (Sandbox Code Playgroud)

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

Kir*_*ill 8

我有同样的问题.

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

Step 1. User Creation 

Step 2. License Step etc.
Run Code Online (Sandbox Code Playgroud)

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

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

更新:

我找到了一个可能有帮助的相关帖子.简而言之:

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

示例代码:

protected void RegisterUser_CreatingUser(object sender, LoginCancelEventArgs e) 
{
 e.Cancel = true; 
} 
Run Code Online (Sandbox Code Playgroud)

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

  1. 添加e.Cancel = False;
  2. 添加CreateUserWizard.ActiveStepIndex =(您的下一个向导步骤索引);

之后,您将需要手动创建用户,例如在FinishButtonClick事件处理程序中.

我还没有尝试过,但它应该工作.希望能帮助到你.