今晚在做一个小练习的登陆模块时,发现asp.net的TextBox在属性为TextMode="Password"时,无法实现Text的赋值操作,因为这是.net出于安全性考虑,无论是前台还是后台。当时怪郁闷的,那平时看到的那些记住密码的是怎么样做到的呢?
View Code
<asp:TextBox runat="server" TextMode="Password" ID="test"></asp:TextBox>
后来想想,既然PassWord模式的TextBox无法弄出那样的效果,那就用正常的TextBox吧,然后禁止复制、剪切功能。简单代码如下:
View Code
<asp:TextBox ID="tbPassWord" runat="server" oncopy="return false" oncut="return false"/>
当然,这里还需要用JS实现一下把每个输入的字符用星号或点号代替。似乎差不多了吧?然而,却出现另一个问题,大多数浏览器会保留对文本框的输入历史,获得鼠标焦点后,文本框下侧会浮现输入历史。
山重水复疑无路,柳暗花明又一村。
在网上发现了另外一种变通的方法,可以在后台给PassWord模式下的TextBox赋值。
this.test.Attributes.Add("value", Request.Cookies["SystemUserInfo"]["UserPwd"]);