ASP:TextBox值仅在密码时才会在回发中消失

Jes*_*caB 10 asp.net passwords postback textbox

我有一个像这样的asp.net文本框:

 <asp:TextBox ID="PINPad" runat="server" Columns="6" MaxLength="4" 
      CssClass="PINTextClass"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)

正如您可能已经猜到的那样,它是屏幕上的键盘上的文本框.Javascript填写值.页面每五秒发回一次(如果重要的话,使用更新面板)以更新屏幕上的各种其他不相关项目.这很好用.

但是,当我将其转换为密码文本框时,如下所示:

  <asp:TextBox ID="PINPad" runat="server" Columns="6" MaxLength="4" 
       CssClass="PINTextClass" TextMode="Password"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)

然后,无论何时页面回发,文本框都会在屏幕上清除,文本框为空(尽管在计时器事件期间,该值会使其返回到服务器.)

有任何建议如何解决这个问题,以便它在回发期间保留其价值?

bdu*_*kes 15

作为安全功能,ASP.NET会尝试禁止您将密码值发送回客户端.如果您对安全问题没有问题(即,它不是真正安全的信息,或者您确定连接是安全的),您可以手动设置"value"控件的属性,而不是使用其Text属性.它可能看起来像这样:

this.PINPad.Attributes.Add("value", this.PINPad.Text);
Run Code Online (Sandbox Code Playgroud)


小智 5

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
  {
        if (!(String.IsNullOrEmpty(txtPwd.Text.Trim())))
        {
             txtPwd.Attributes["value"]= txtPwd.Text;              
        }
        if (!(String.IsNullOrEmpty(txtConfirmPwd.Text.Trim())))
        {
            txtConfirmPwd.Attributes["value"] = txtConfirmPwd.Text;
        }
  }
}
Run Code Online (Sandbox Code Playgroud)