首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 回發導致密碼框清空問題解決方案

     編輯:ASP.NET 基礎

現象

含 <asp:TextBox TextMode="Password"> 的頁面發生 PostBack 後,密碼欄位顯示為空,使用者需重新輸入。

原因

瀏覽器安全機制預設不自動填充 type="password" 的 value 屬性;ASP.NET 回發重新渲染時未將明文寫入 value。

最簡修復(Page_Load)

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        txtPassword.Attributes["value"] = txtPassword.Text;
    }
}

更完善:封裝為擴充方法

public static class TextBoxExtensions
{
    public static void RetainPassword(this TextBox txt)
    {
        if (txt.TextMode == TextBoxMode.Password && !string.IsNullOrEmpty(txt.Text))
        {
            txt.Attributes["value"] = txt.Text;
        }
    }
}

// 使用
protected void Page_Load(object sender, EventArgs e)
{
    txtPassword.RetainPassword();
    txtConfirmPwd.RetainPassword();
}

注意事項

  • 僅在 PostBack 時設定,首次載入不需處理。
  • 若啟用 AutoCompleteType="Disabled",瀏覽器可能仍拒絕自動填充,但手動設定 value 屬性通常有效。
  • 安全敏感系統建議不保留密碼,改由使用者重新輸入,符合合規要求。

替代方案

  • 使用 UpdatePanel 局部更新,避免整頁回發導致密碼框重渲染。
  • 前端 JS 記憶輸入(sessionStorage),回發後自動回填(需權衡安全性)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved