含 <asp:TextBox TextMode="Password"> 的頁面發生 PostBack 後,密碼欄位顯示為空,使用者需重新輸入。
瀏覽器安全機制預設不自動填充 type="password" 的 value 屬性;ASP.NET 回發重新渲染時未將明文寫入 value。
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();
}
AutoCompleteType="Disabled",瀏覽器可能仍拒絕自動填充,但手動設定 value 屬性通常有效。UpdatePanel 局部更新,避免整頁回發導致密碼框重渲染。sessionStorage),回發後自動回填(需權衡安全性)。