2010-06-23 55 views
2

我在我的登錄/創建用戶頁面上使用表單身份驗證的CreateUserWizard控件。我定製了CreateUserWizardStep1,以便我可以添加一些額外的驗證器。無法清除ASP.NET上的憑證文本框CreateUserWizard控件

用控件成功創建用戶後,它顯示「完成 您的帳戶已成功創建。」我已經添加了一個額外的按鈕,通過設置ActiveStepIndex = 0,允許該人創建另一個用戶。問題是,雖然它正確設置了ActiveStepIndex,但仍保留舊的用戶帳戶憑據。我嘗試使用下面的代碼手動清除它們,但它們仍然堅持...任何人有任何想法?

Protected Sub btnCreateAnotherUser_Click(ByVal sender As Object, ByVal e As System.EventArgs) 

    Me.cuwMain.ActiveStepIndex = 0 
    CleanCreateNewUserInput() 

End Sub 

Private Sub CleanCreateNewUserInput() 

    Dim txtUserName As TextBox 
    txtUserName = FindControlIterative(Me.cuwMain, "UserName") 
    txtUserName.Text = String.Empty 

    Dim txtPassword As TextBox 
    txtPassword = FindControlIterative(Me.cuwMain, "Password") 
    txtPassword.Text = String.Empty 

    Dim txtConfirmPassword As TextBox 
    txtConfirmPassword = FindControlIterative(Me.cuwMain, "ConfirmPassword") 
    txtConfirmPassword.Text = String.Empty 

    Dim txtEmail As TextBox 
    txtEmail = FindControlIterative(Me.cuwMain, "Email") 
    txtEmail.Text = String.Empty 

    Dim txtQuestion As TextBox 
    txtQuestion = FindControlIterative(Me.cuwMain, "Question") 
    txtQuestion.Text = String.Empty 

    Dim txtAnswer As TextBox 
    txtAnswer = FindControlIterative(Me.cuwMain, "Answer") 
    txtAnswer.Text = String.Empty 

End Sub 

它正確地發現文本框,但它實際上並沒有重新設置他們的價值觀,即使在調試器它說,它做到了。

想法?

回答

1

我覺得很傻張貼這個...,但我只是把視圖狀態關閉的CreateUserWizard控件,並且做到了。

感謝Daniel的幫助,我現在對ASP.NET如何存儲信息有了更好的理解。

2

如果您致電Response.Redirect(Request.Url.ToString(), true),會發生什麼情況?這應該爲你清除一切。

此外,FindControlIterative調用的遞歸本質會使您的代碼運行起來相當昂貴,因爲它必須深入查找您要查找的每個控件的控件圖層。

您的代碼存在的問題是: 在Wizard控件中,ViewState不負責存儲控件(如TextBoxes)的修改值。這些控件實現IPostBackDataHandler接口。該LoadPostBackData事件觸發的頁面生命週期,在該控件的值從表單HTTP POST頭......這是由客戶端重新提交加載...

那麼如何摧毀HTTP POST頭清除控制值?

在新的HTTP POST頭一個新的請求,結果...只是這樣做的按鈕單擊事件處理程序:

的Response.Redirect(Page.Request.Url.ToString());

這有附加的好處,它轉到嚮導的第1步,所以你也不必做... wiz.MoveTo(wiz.WizardSteps [0])。

感謝康拉德 - ASP.Net Wizard - How to clear contents of web controls

+0

雖然有效,但它還會隱藏一個隱藏字段,我將其用作標誌來決定是否顯示「您必須同意......」隱私政策JavaScript彈出窗口。 我的原始代碼有什麼問題? – bulltorious 2010-06-23 13:27:21

+0

請參閱我編輯的有關hpw的答案,設置值。如果不敏感,您可能必須存儲隱藏的字段值並將其傳回頁面,無論是在SessionState還是在URL中。 – 2010-06-23 13:35:48