.net 密碼框賦值、輸入以及頁面刷新狀態下的處理過程

在最近基於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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章