在最近基於ASP.NET的項目中,遇到密碼框在輸入密碼時的一些問題,下面將這些問題總結一下,供大家參考學習:
一、輸入狀態爲密碼模式
這個相對簡單,只需要將TextBox屬性中的TextMode屬性設置爲Password即可。
二、賦值狀態爲密碼模式
在一般情況下,你會發現,你將TextBox的TextMode屬性設置爲Password後,在後臺給密碼框傳值時,是沒有顯示的,調試中你會發現,其實值已經傳遞給它了,只是沒有顯示出來;當你把TextBox的TextMode屬性設置爲SingleLine時,你就會看到你傳遞的值了,調試狀態下你也可以看見你傳遞的值。那我們有沒有什麼辦法來解決呢?
辦法是有的。
第一種方法:
網上很多朋友都採用了txtPWD.Attributes.Add("value", str); 的方式來實現,其中,txtPWD爲密碼框的ID。你會發現,問題確實是解決了,但是這種方式在安全性方面存在一定的問題。當你右鍵——查看源文件時,你就會看見你的密碼,這是你會感覺到這種方法的缺陷性了。
第二種方法:
採用後臺調用JS的方式來實現,源碼如下:
StringBuilder str = new StringBuilder();
str.Append("<script language=javascript>");
str.Append("document.all('" + txtPWD.ClientID + "').value='" + pwd + "';");
str.Append("document.all('" + txtSurePWD.ClientID + "').value='" + pwd + "';");
str.Append(@"</script>");
Page.ClientScript.RegisterStartupScript(Page.GetType(), "*", str.ToString());
其中,txtPWD和txtSurePWD都是對應前臺頁面中的密碼框ID,而pwd爲你賦給密碼框的密碼值。這種方式在相對安全的情況下很好地解決了密碼框賦值的問題。
三、刷新頁面時密碼框清空問題
你會遇到,當頁面有刷新操作時,密碼框就會清空,還得重新輸入一遍密碼,是不是相當麻煩,那如在頁面刷新狀態下不讓密碼框清空呢?
你可能會想到在後臺的page_load{}中作if(IsPostBack){}的處理,但是頁面第一次加載時就會出現問題。
那有沒有好點的方法呢?
通過在後臺對密碼框的內容作判斷來處理。源碼如下:
protected void Page_Load(object sender, EventArgs e)
{
if (Request["txtPWD"] != null)
{
txtPWD.Attributes["value"] = Request["txtPWD"].ToString();
}
}
其中,txtPWD爲你頁面中密碼框的ID。