Can';t清除ASP.NET CreateUserWizard控件上的凭据文本框
我有一个CreateUserWizard控件,在我的登录/创建用户页面上使用表单身份验证。我定制了CreateUserWizardStep1,以便添加一些额外的验证器 使用控件成功创建用户并显示“完成”后 您的帐户已成功创建。“我添加了一个附加按钮,该按钮将允许用户通过设置ActiveStepIndex=0来创建另一个用户。问题是,虽然它正确设置了ActiveStepIndex,但它保留了旧的用户帐户凭据。我尝试使用以下代码手动清除它们,但它们仍然会粘住……有人有什么想法吗Can';t清除ASP.NET CreateUserWizard控件上的凭据文本框,asp.net,findcontrol,createuserwizard,Asp.net,Findcontrol,Createuserwizard,我有一个CreateUserWizard控件,在我的登录/创建用户页面上使用表单身份验证。我定制了CreateUserWizardStep1,以便添加一些额外的验证器 使用控件成功创建用户并显示“完成”后 您的帐户已成功创建。“我添加了一个附加按钮,该按钮将允许用户通过设置ActiveStepIndex=0来创建另一个用户。问题是,虽然它正确设置了ActiveStepIndex,但它保留了旧的用户帐户凭据。我尝试使用以下代码手动清除它们,但它们仍然会粘住……有人有什么想法吗 Protect
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
它正确地找到了文本框,但实际上并没有重置它们的值,即使在调试器中它说它重置了
想法?如果调用
Response.Redirect(Request.Url.ToString(),true)会发生什么情况?那会帮你清除一切
此外,FindControlIterative调用的递归性质会使代码运行起来非常昂贵,因为它必须深入到您要查找的每个控件的控件继承权中
代码的问题在于:
在向导控件中,ViewState不负责存储控件(如文本框)的修改值。这些控件实现IPostBackDataHandler接口。LoadPostBackData事件在页面生命周期中激发,其中控件的值从表单HTTP POST标头加载。。。由客户重新提交的内容
那么,如何销毁HTTP POST头以清除控制值呢
新请求将导致新的HTTP POST标头。。。只需在按钮单击事件处理程序中执行此操作:
Response.Redirect(Page.Request.Url.ToString())
这有一个额外的好处,它会转到向导的步骤1,因此您也不必执行。。。wiz.MoveTo(wiz.WizardSteps[0])
归功于Konrad-我觉得发布这个…很傻,但我刚刚在CreateUserWizard控件上关闭了viewstate,就这样做了
谢谢你的帮助Daniel,我现在对ASP.NET如何存储信息有了更好的了解 这是可行的,但它也会生成一个隐藏字段,我用它作为标志来决定是否显示“您必须同意…”隐私策略JavaScript弹出窗口。我的原始代码有什么问题?请参阅我编辑的关于hpw的答案。值已设置。您可能必须存储该隐藏字段值并将其传递回页面,如果不敏感,可以在SessionState或URL中进行。