无法清除ASP.NET CreateUserWizard控件上的凭据文本框

时间:2010-06-23 13:12:18

标签: asp.net findcontrol createuserwizard

我在登录/创建用户页面上使用表单身份验证创建了一个CreateUserWizard控件。我自定义了CreateUserWizardStep1,以便我可以添加一些额外的验证器。

使用控件成功创建用户后,显示“完成” 您的帐户已成功创建。“我添加了一个额外的按钮,允许此人通过设置ActiveStepIndex = 0来创建另一个用户。问题是,当它正确设置ActiveStepIndex时,它会保留旧的用户帐户凭据.I尝试使用以下代码手动清除它们,但它们仍然坚持......任何人都有任何想法?

   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

它正确地找到了文本框,但它实际上并没有重置它们的值,即使它在调试器中也说明了它。

想法?

2 个答案:

答案 0 :(得分:2)

如果致电Response.Redirect(Request.Url.ToString(), true)会怎样?这应该为你清除一切。

此外,FindControlIterative调用的递归性质会使您的代码运行起来非常昂贵,因为它必须深入到您正在寻找的每个控件的控件层次。

您的代码存在的问题是: 在向导控件中,ViewState不负责存储TextBoxes等控件的修改值。这些控件实现了IPostBackDataHandler接口。 LoadPostBackData事件在页面生命周期中触发,其中控件的VALUES从表单HTTP POST头文件加载...由客户端重新提交...

那么如何销毁HTTP POST Headers来清除控件值?

新请求会导致新的HTTP POST标头...只需在按钮单击事件处理程序中执行此操作:

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

这有额外的好处,它转到向导的第1步,所以你也不必做... wiz.MoveTo(wiz.WizardSteps [0])。

归功于康拉德 - ASP.Net Wizard - How to clear contents of web controls

答案 1 :(得分:1)

我觉得发布这个很傻......但是我刚刚在CreateUserWizard控件上关闭了viewstate并且就这样做了。

感谢Daniel的帮助,我现在对ASP.NET如何存储信息有了更好的理解。