灵活修改页面控件

本文探讨了在ASP.NET中如何通过自定义TextBox控件来实现点击时全选的功能。作者对比了几种实现方法,最终选择了继承TextBox并重写相应事件的方式。文中详细介绍了这种方法的实施步骤,并讨论了其优缺点。

    最近一个偶然的机会,客户要求当点击TextBox时,全部选中。当时眉头一邹,低估这次修改的代码量确实太多。大家都知道,其实使用JS脚本是非常简单。要修改这个其实有很种方案

  1. 在每个页面输出JS脚本,点获取焦点时则进行处理
  2. 从TextBox继承下来,并添加相应的事件

从这个处理上每一种都可以满足需要,第二种方案看修改要修改很多代码,而第一种方案确实是可行,但是我更加喜欢使用第二种方法,理由很简单,因为第二种方法面向对象(当然这在程序开发并不是非常重要的),假设将来,可能TextBox有漏洞(针对特定应用程序),也可以在服务器端进行更好的验证。
    比如说:TextBox可能设置个MaxLength,你可能认为安全的限定输入的大小,同时如果这个页面允许js脚本的回发,那么,也就是说TextBox里面可以放放任何的HTML代码,那安全性就大打折扣了,所以需要在服务器进行相应的处理
    我最终选择第二种方案,但是代码的修改量大得惊人,而且修改后,会不会引入新的bug呢?有没有不需要修改其aspx或者ascx控件呢?
    在aspx或ascx文件中,可以通过相应的指令进行控制页面的基类,还可以引入某个命名空间等等,这些配置为我们编程提供极大的灵活性。在.net的相应配置下有没有这种功能呢?如果你看过machine.config会看到很多东西是与人们常谈的生命周期存在很大的相关.
    dot net 版本在2.0之前,据我所知是没有办法设置,而在2.0则是通过<tagMapping>配置节进行设置的,在asp.net 2.0中,将以下配置脚本添加到<pages>节下的web.config文件中
    <add tagType=”System.Web.UI.WebControls.TextBox” mappedTagType=”yi.Samples.TextBox” />
<tapMapping>节允许您在编译时将一种控件类型重新映射到另一种控件类型.通过这种重新映射,我们使用被映射的类型替代了受配置文件控制的全部页面和用户控件的原始类型根据前面给出的代码,任何引用系统TextBox的地方均将使用yi.Samples.TextBox.
   .net 2.0提供更加的灵活方式处理,以便我们更好的扩展.

转载于:https://www.cnblogs.com/yi/archive/2007/11/29/977079.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值