在PostBack上保留密码字段值

时间:2010-08-19 10:49:39

标签: c# asp.net

现在我有一个带有3个步骤的asp:向导。

  1. 创建用户
  2. 表格发送电子邮件
  3. 字段摘要
  4. 在第三步点击完成按钮后,我想创建用户并发送表单。我有这个写的逻辑,但我唯一的问题是当向导按下一个按钮,发生PostBack和我的密码字段时:

    <asp:TextBox ID="txtPassword" TextMode="Password" Width="70%" runat="server" />
    

    不保留其价值。

    您认为对我来说,克服这个问题最安全,最实用的方法是什么?

3 个答案:

答案 0 :(得分:2)

我可能会开发一个表示将由向导创建的数据的类:

public class WizardForm
{
    public User NewUser {get;set;}
    public Form FormToEmail {get;set;}
}

然后在通过向导的每一步中,我都会更新这个类并将其存储在会话中:

WizardForm form = Session["WizardForm"] as WizardForm;
if (form == null)
{  
     form = new WizardForm();
     Session["WizardForm"] = form;
}

form.User.Password = txtPassword.Text; // etc

或者您可以将密码存储在Session中并稍后检索:

Session["WizardPassword"] = txtPassword.Text;
string password = Session["WizardPassword"].ToString();

答案 1 :(得分:2)

我认为你不需要创建任何类;只需在page_load方法中使用以下代码行:

YourTextBoxName.Attributes["value"] = YourTextBoxName.Text ;

这应该可以解决这个问题。

答案 2 :(得分:1)

在密码模式下,这个beavior内置于asp.net TextBox控件。如果您想要不同的行为,您可以创建自己的密码服务器控件或使用runat =“server”的普通HTML输入控件。您还可以在用户进入下一个向导步骤时保存密码,然后显示占位符而不是文本框。为了更改或编辑密码,用户必须返回相关的向导步骤。