2011-06-14 58 views
10

我想使用ootb ASP.NET2.0 MembershipProvider CreateUserWizard控件,稍加定製即可添加第二步。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> 

反正是有告知控制要等到所有的步驟都是在創建用戶之前完成?

回答

8

我有同樣的問題。

似乎有是利用具有所需的順序的CreateUserWizard沒有其他辦法:

Step 1. User Creation 

Step 2. License Step etc. 

CreateUserWizardStep數據一直寫入到數據庫後,除非你覆蓋的CreateUserWizard類。

如果您顛倒這些步驟的順序,它應該像Erich Peterson在4GuysFromRolla網站上發佈的那樣工作,即步驟1.許可步驟,步驟2. ......步驟3.用戶創建。

UPDATE:

我已經找到了相關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 =(您的下一個嚮導步驟索引);

之後,您將需要手動創建用戶,例如,在FinishButtonClick事件處理程序中。

我還沒有嘗試過,但它應該工作。 希望它有幫助。

+0

這對我來說實際上是有意義的!碰巧,我正在工作的wbesite中的v1將不再具有多次停止的CreateUserWizard控件,所以我可能暫時不會嘗試這種方法,但我相信我會在將來做。我將把這個標記爲答案,因爲即使我沒有自己測試過它,邏輯也是合理的:)乾杯! – QMKevin 2011-07-25 18:29:56

+0

嗨,我知道這是一箇舊帖子。你真的可以幫助我嗎?當你真的創建用戶?你在做手動嗎?我在抓取捕獲的密碼時遇到問題 – Crudler 2013-03-11 15:34:59