`
volunteer521
  • 浏览: 207123 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

TextBox控件Password模式下,触发服务器端事件后,自动清空显示值问题

    博客分类:
  • C#
阅读更多

背景说明:

在一个项目中,测试人员曾反映,一个注册页面,当提交注册的时候,提示必填项不能为空,于是根据提示填上所需信息,结果总是提示“密码、确认密码不能空”!密码早就填啦,怎么还报错?!如此反复,该同事恼火了,要开发人员马上解决这个Bug!!不然后面的功能没法测试。

 

问题分析:

1、其实,该注册页面,除了用户名、密码外,还有不少必填项,需要滚动条才能看到底部的提交按钮。

2、提交前会进行验证,包括客户端和服务器端验证。客户端采用JS统一进行非空验证;服务器端采用验证控件进行正则验证,例如格式、长度、范围等。

3、若必填项为空,则客户端JS只弹一次窗口,统一提示哪些项不能为空。(服务器端则不验证,减轻负担)

4、由于该注册页面基本上采用了Web控件,于是问题来了。当前端JS弹出提示信息后,TextBox控件,在Password模式下(TextMode="password"),会自动清空显示值。

5、结果,就出现文章开头的情况了。

 

解决方案:

一开始,没想到简洁的解决法,用JS把密码先保存在隐藏字段再赋值吧,还是不行。

网上搜好久,遇到类似问题的童鞋还真不少,就是没有有效的解决方案。但有个童鞋则自己想出了解决方法,赞一个!

(原文见:http://heiyelidexingxing.blog.163.com/blog/static/3157821120086153610519/

 

 关键代码如下:

//说明:TextBox1.Attributes["value"]="123456789";可给TextBox赋值。

//在TextBox的OnTextChanged事件中,添加

this.TextBox1.Attributes["value"] = this.TextBox1.Text;

//或

this.TextBox1.Attributes["value"] = Request.Form[TextBox1.ClientID];

//即可。

//为稳妥起见,设置onpaste="return false" oncut="return false" 让TextBox不可以粘贴、复制。

  

分享到:
评论

相关推荐

    asp.net防止密码框被清空的解决方案ydc

    综上所述,通过在`Page_Load`事件中添加特定的代码,可以有效地解决ASP.NET中密码框在页面回发后被清空的问题,从而提升用户体验,尤其是在用户需要多次修正输入信息的场景下。这种方法既简单又有效,值得在实际项目...

    asp.net 2.0 防止密码框被清空的解决方案

    在标准Web表单操作中,当用户因为某些原因需要重新填写表单(例如,验证失败或数据错误),PostBack(页面回发)会导致密码输入框(TextBox控件的TextMode设置为Password)被自动清空,这给用户体验带来不便。...

    TextBoxToolExample

    TextBoxToolExample是一个基于C#构建的窗口应用程序,它专注于TextBox控件的使用和展示。TextBox在Windows Forms和WPF等GUI框架中是非常常见且重要的组件,主要用于用户输入文本。在这个项目中,我们可以深入理解...

    asp期末试题

    3. **TextBox控件中显示特定数据**: - 要在`TextBox`控件中显示特定的数据值,可以通过直接赋值的方式实现。例如,要显示一个`double`类型的变量`nn`的值,可以通过以下方式设置: ```csharp TextBox1.Text = nn...

    VB 清空回收站 源代码 加上登陆器

    Visual Basic是Microsoft开发的一种可视化编程工具,它允许开发者通过拖拽控件和编写事件驱动的代码来创建应用程序。它的语法简洁,适合初学者入门。 清空回收站的功能在VB中实现,需要调用Windows API(应用程序...

    清除表单中所有输入字段的简便方法。

    在这个例子中,当用户点击`btnClear`按钮时,服务器会接收到`Click`事件,执行相应的处理方法,清空`txtName`文本框以及其他控件的值。 需要注意的是,服务器端方法会引发页面回发,可能导致用户体验上的延迟,因此...

    ASP.NET中使用电信飞信接口的C#源码

    - 如果发送成功,清空消息框并弹出提示框显示“消息发送成功”。 3. **关键代码片段**: ```csharp protected void Button1_Click(object sender, EventArgs e) { // username为用户名, password为密码, ...

    ASP.NET导出数据到Excel

    这里定义了一个包含`DataGrid`控件和一个用于触发导出操作的按钮的表单。`DataGrid`控件用于展示数据,并且通过`BoundColumn`绑定数据源中的列。 ```csharp private void Data_Load() { string myConn = "UserId=...

Global site tag (gtag.js) - Google Analytics