背景说明:
在一个项目中,测试人员曾反映,一个注册页面,当提交注册的时候,提示必填项不能为空,于是根据提示填上所需信息,结果总是提示“密码、确认密码不能空”!密码早就填啦,怎么还报错?!如此反复,该同事恼火了,要开发人员马上解决这个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不可以粘贴、复制。
分享到:
相关推荐
综上所述,通过在`Page_Load`事件中添加特定的代码,可以有效地解决ASP.NET中密码框在页面回发后被清空的问题,从而提升用户体验,尤其是在用户需要多次修正输入信息的场景下。这种方法既简单又有效,值得在实际项目...
在标准Web表单操作中,当用户因为某些原因需要重新填写表单(例如,验证失败或数据错误),PostBack(页面回发)会导致密码输入框(TextBox控件的TextMode设置为Password)被自动清空,这给用户体验带来不便。...
TextBoxToolExample是一个基于C#构建的窗口应用程序,它专注于TextBox控件的使用和展示。TextBox在Windows Forms和WPF等GUI框架中是非常常见且重要的组件,主要用于用户输入文本。在这个项目中,我们可以深入理解...
3. **TextBox控件中显示特定数据**: - 要在`TextBox`控件中显示特定的数据值,可以通过直接赋值的方式实现。例如,要显示一个`double`类型的变量`nn`的值,可以通过以下方式设置: ```csharp TextBox1.Text = nn...
Visual Basic是Microsoft开发的一种可视化编程工具,它允许开发者通过拖拽控件和编写事件驱动的代码来创建应用程序。它的语法简洁,适合初学者入门。 清空回收站的功能在VB中实现,需要调用Windows API(应用程序...
在这个例子中,当用户点击`btnClear`按钮时,服务器会接收到`Click`事件,执行相应的处理方法,清空`txtName`文本框以及其他控件的值。 需要注意的是,服务器端方法会引发页面回发,可能导致用户体验上的延迟,因此...
- 如果发送成功,清空消息框并弹出提示框显示“消息发送成功”。 3. **关键代码片段**: ```csharp protected void Button1_Click(object sender, EventArgs e) { // username为用户名, password为密码, ...
这里定义了一个包含`DataGrid`控件和一个用于触发导出操作的按钮的表单。`DataGrid`控件用于展示数据,并且通过`BoundColumn`绑定数据源中的列。 ```csharp private void Data_Load() { string myConn = "UserId=...