yi

     沉睡的字符正在苏醒,0和1正在展示自然的魄力!

导航

灵活修改页面控件

    最近一个偶然的机会,客户要求当点击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提供更加的灵活方式处理,以便我们更好的扩展.

posted on 2007-11-29 15:50  yi  阅读(218)  评论(0编辑  收藏  举报