在最近基于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("
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。