热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小心使用Asp:TextBox的ReadOnly属性

昨天下午的考试系统代码代码走查中,发现一个很小的Bug,如下图所示:当文本框获得焦点后,弹出日期控件,根据选择,将日期显示在文本框中。但是,这里发现:日期是可以胡乱修改的哦!

    

    昨天下午的考试系统代码代码走查中,发现一个很小的Bug,如下图所示:当文本框获得焦点后,弹出日期控件,根据选择,将日期显示在文本框中。但是,这里发现:日期是可以胡乱修改的哦!


bubuko.com,布布扣

那么,我该如何解决这个问题呢?当初在思考问题的时候,共提供两种解决方案:
    1、文本框的内容是可以手动输入的,但是需要对输入的内容进行验证:看看是否符合“日期”格式。
    2、控制文本框只能选择日期控件,不能手动输入。

接下来,便是根据自己的思路去网上求助:
    首先是,第一种解决思想:你可以在“开始日期”一栏中,手动输入日期。但是需要对输入的信息进行验证,这里主要采用:RegularExpressionValidator验证控件,同时要使用“正则表达式”。通过在网上检索“月/日/年 正则表达式”,发现这个日期格式的表达式好复杂呀?!首先,每个月份的天数不一样,同时,还要分为:平年和闰年。光表达式就有三行之多。还是,否决了吧。
    第二种解决思想:控制文本只能选择,不能输入。就是说:文本框可以获得焦点(focus可用)。但是不能键入,就是文本为空,难道要.text=""?怎么可能?!于是,按照自己的思维又搜索了一番。仍然没有解决。

    后来,去找八期的刘艳玲学姐商量,是否存在一种更好的解决办法的思想呢?“也许可以用文本框键入焦点后,禁止键盘事件,只能用鼠标进行点击。”虽然,最终没有按照这种思想来实现。但毕竟是一种新型的思考问题的方式,这里表示赞同。

    最终解决方案:ReadOnly属性=“true”。让文本框变得只读,便可以解决此问题。引起我思考的是:明明是这么一个简单的属性,为什么当初我没有想到呢?《机房收费系统》中,明明已经反复使用了数百遍,但是还是没有这个意识呢?

    举个例子:只让文本框实现显示功能,不能对内容进行修改。你可以使用.Enabled属性=False;也可以使用。ReadOnly属性=False。于是,我就随便选了一个,而并没有想要弄清楚两者之间有什么区别?这就导致了,在知识的学习过程中,把知识点割裂开来,没有形成一张“网”。
    
    接下来又是遇到了新的问题,虽然用ReadOnly达到了不能手动输入的目的。但是,又出现了新的问题,后台无法获得文本框中的日期。
    在.Net 1.1和.Net 2.0平台下TextBox控件的ReadOnly属性用法有所不同。在.Net 1.1平台下,我们直接把TextBox控件的ReadOnly属性设置为True,在后台是可以取到值的。但是在.Net 2.0平台下这样直接设置是取不到值的,这是因为.Net 2.0平台为了安全性考虑,在服务器端不处理只读文本框, 我们可以动态改变TextBox的ReadOnly属性,例:TextBox1.Attributes.Add("readonly","true");这样就不会影响后台取值了。

总结:学习的过程中不要为了实现某种功能,而只是简简单单的“使用”,还要理清知识点之间的联系。所有的知识都有他们的共性。这样才能够达到简化知识点的目的,用起来才能得心应手。
           






推荐阅读
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 使用REM和媒体查询实现响应式布局
    本文介绍如何利用REM单位和媒体查询(Media Queries)来创建适应不同屏幕尺寸的网页布局。通过具体示例,展示在不同屏幕宽度下如何调整页面元素的样式。 ... [详细]
  • LoadRunner中的IP欺骗配置与实践
    为了确保服务器能够有效地区分不同的用户请求,避免多人使用同一IP地址造成的访问限制,可以通过配置IP欺骗来解决这一问题。本文将详细介绍IP欺骗的工作原理及其在LoadRunner中的具体配置步骤。 ... [详细]
  • 本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ... [详细]
  • 本文介绍如何使用 Python 计算两个时间戳之间的时间差,并将其转换为毫秒。示例代码展示了如何通过 `time` 和 `datetime` 模块实现这一功能。 ... [详细]
  • 本文详细对比了HashMap和HashTable在多线程环境下的安全性、对null值的支持、性能表现以及方法同步等方面的特点,帮助开发者根据具体需求选择合适的数据结构。 ... [详细]
  • 神策数据分析基础
    本文介绍了基于用户行为的数据分析方法,包括业务问题的提出与定义、具体行为的识别及统计分析流程。同时,详细阐述了如何利用事件模型(Event Model)来描述用户行为,以及在实际应用中的案例分析。 ... [详细]
  • Docker基础入门与环境配置指南
    本文介绍了Docker——一款用Go语言编写的开源应用程序容器引擎。通过Docker,用户能够将应用及其依赖打包进容器内,实现高效、轻量级的虚拟化。容器之间采用沙箱机制,确保彼此隔离且资源消耗低。 ... [详细]
  • 本文列举了构建和运行 Struts2 应用程序所需的核心 JAR 文件,包括文件上传、日志记录、模板引擎等关键组件。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 本文介绍了用户界面(User Interface, UI)的基本概念,以及在iOS应用程序中UIView及其子类的重要性和使用方式。文章详细探讨了UIView如何作为用户交互的核心组件,以及它与其他UI控件和业务逻辑的关系。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • 本文详细介绍了如何使用Rufus工具制作一个兼容UEFI启动模式的Windows Server 2008 R2安装U盘,包括必要的软件和步骤。 ... [详细]
  • 本文提供了一个关于AC自动机(Aho-Corasick Algorithm)的详细解析与实现方法,特别针对P3796题目进行了深入探讨。文章不仅涵盖了AC自动机的基本概念,还重点讲解了如何通过构建失败指针(fail pointer)来提高字符串匹配效率。 ... [详细]
author-avatar
寒风中挣扎_427
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有