10

我想使用 ootb ASP.NET2.0 MembershipProvider CreateUserWizard 控件,并进行一些自定义以添加第二步。

问题是,如果我的第一步是 type<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>

无论如何要告诉控件等到所有步骤都完成后再创建用户?

4

1 回答 1

8

我有同样的问题。

似乎没有其他方法可以按照您想要的顺序使用 CreateUserWizard:

Step 1. User Creation 

Step 2. License Step etc.

在 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; 
} 

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

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

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

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

于 2011-07-23T18:30:02.543 回答