ASP.net 关于TextBox的TextMode=“PassWord”时的动态赋值

ASP.net 关于TextBox的TextMode=“PassWord”时的动态赋值

因为项目需要,需要在界面上调取用户信息(包括用户名、密码、电话、邮箱等等),除了“密码”和“确认密码”两个控件不能被赋值,后台用watch监控TBPwd和TBPwdConfirm正常赋值,但是刷新完的界面中这两个控件显示为空。觉得Pwd和PwdConfirm的TextMode=“PassWord”应该是问题的关键,遂上网搜索解决办法,找到了幾個帖子,在這里綜合複述一下,基本思路是:

方法一:
新建一個TextMode=“SingleLine”,這樣它的值就會保留到控件裡面,再給它設置一個visible=“false”屬性他就不會再頁面上顯示出來,將從數據庫裡面獲取到的密碼的值賦給它,給最後將該值賦給密碼控件和確認密碼控件,問題就解決了。

步驟:
1、在界面创建一个新的TBPwdTemp并设置TextMode=“SingleLine”,visible=“false”,将数据库密码值传给该TextBox;

2、然后在Page_Load函數裡面分别用

this.TBPwd.Attributes.Add("value", this.TBPwdTemp.Text);

this.TBPwdConfirm.Attributes.Add("value",this.TBPwdTemp.Text);将TBPwdtemp值传给密码控件;

然后运行后果然界面上密码控件显示“******”。

  自己比較笨,看完以後也是試了好久才實現,是因為龍錯了幾個ID代表的意思,所以想在這里多加說明一下。
  參數說明:
     TBPwd為密碼控件的id
     TBPwdConfirm維確認密碼控件的ID
     TBPwdTemp為新建<TextBox>控件的ID
     this.TBPwdTemp.Text為TBPwdTemp獲取到數據庫以後的值
     value運用是value不變

至于为什么不能直接赋值我个人的看法是:为了密码的安全性考虑,TextMode=“PassWord”的textBox不能绑定动态的数据吧,即使在后台测试的时候不会出错;但是通过中间临时的TextBox ,先将动态的值填进TextBox转化为静态的,然后再赋值给TextMode=“PassWord”的TextBox(相当于人工手动输入密码的效果)便可成功。

方法二:
一、设置密码框

在asp.net中密码框并不神奇,只是将普通TextBox的TextMode属性值修改为Password即可;

二、防止页面刷新清空密码框

TextBox一旦被修改为密码框,其填充的值会随着页面的刷新而被清空,处理方法如下:

在页面后台,Page_Load函数中添加一段代码:

    if (this.txtPassword.Text != "")//防止页面刷新,密码文本被清空
    {
        this.txtPassword.Attributes["value"] = this.txtPassword.Text;
    }

其中,txtPassword为密码框的ID,其他照写即可;

注意:该if语句必须写在if (!IsPostBack){。。。}外面,否则不起作用!

转载自:https://www.bbsmax.com/A/QV5Z1ApZJy/
轉載自:https://blog.csdn.net/whx_1113/article/details/8778366

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值