当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 探讨ASP.NET 2.0的Web控件改进之概述

ASP.NET
asp.net GridView控件中模板列CheckBox全选、反选、取消
asp.net GridView 删除时弹出确认对话框(包括内容提示)
asp.net DropDownList 三级联动下拉菜单实现代码
asp DataTable添加列和行的三种方法
Asp.net 页面调用javascript变量的值
asp.net 长文章通过设定的行数分页
asp.net 定时间点执行任务的简易解决办法
asp.net 页面延时五秒,跳转到另外的页面
asp.net 动态输出透明gif图片
asp.net DataList与Repeater用法区别
asp.net Javascript获取CheckBoxList的value
asp.net程序在调式和发布之间图片路径问题的解决方法
asp.net下生成英文字符数字验证码的代码
asp.net 页面版文本框智能提示JSCode (升级版)
ASP.NET URL伪静态重写实现方法
ASP.NET 2.0 中Forms安全认证
asp.net 动态添加多个用户控件
asp.net Repeater显示父子表数据,无闪烁
asp.net 无法获取的内部内容,因为该内容不是文本 的解决方法
asp.net GridView排序简单实现

探讨ASP.NET 2.0的Web控件改进之概述


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 46 ::
收藏到网摘: n/a

  一、 引言

  到目前为止,你可能已经了解了大量的ASP.NET 2.0新特征-母版页面,主题,提供者,等等……所有这样内容都相当精彩;但是,你是否了解到有关定制Web控件开发方面的重大变化?这正是我在本文中所想讨论的。如果你已经从事于控件开发,那么,我想本文所描述的ASP.NET 2.0中的新的改进特征会立即应用于你的控件开发中。

  首先应该注意的是,你以前使用ASP.NET 1.1(或1.0)开发的所有Web控件在2.0版本下将继续良好运行-微软并没有破坏你的现有代码。在本文中,我将向你介绍的所有相关内容,包括许多新的令人激动的技术,所有这些你都可以添加到现有控件或在新的控件环境中使用。

  【作者注】本文假定你对定制Web控件开发已经有一个基本了解。在本文中,我以一个增强版本的EmailContact控件为例对ASP.NET 2.0中的Web控件改进技术作全面探讨。

  二、 改进

  表格1描述了ASP.NET 2.0在定制Web控件开发方面所作的大部分的重大改进。在本系列文章中,我将对这些特征展开逐一讨论。

  表格1:ASP.NET 2.0 Web控件改进功能。

改进描述
新的基类ASP.NET 2.0中又引入了一些新的基类供你派生自己的控件。后面,我重点介绍一个控件-CompositeControl。
ControlState 这是我们所熟悉的ViewState的"嫡亲"。如今,ControlState中已经不再需要使用专门的方法进行状态管理;另一方面,当控件用户在一个站点(或页面)上关闭状态管理机制时,有助于使你避免出错。
灵敏标签 这是令Windows控件开发者相当兴奋的新功能!在本文中,我将向你展示如何在你自己的定制控件中加入这样的功能。
模板设计时刻编辑在1.1版本中,要对控件模板添加设计时刻编辑能力是相当困难的。幸好,ASP.NET 2.0使得添加这个功能相当容易。在本系列文章的最后一部分中我将讨论这个问题。
自动格式化 这也是一个巨大的改进!在使用DataGrid控件时你可以从一个预定义格式的列表中选择既定格式。ASP.NET 2.0使得在你的自定义控件中加入这一功能也非常容易。
Web资源 这是我十分喜欢的一个改进,因为我总是不时地开发与图像有关的一些控件。在ASP.NET 2.0中,现在你可以发布一个控件的DLL,而且不必再考虑别的什么内容。也就是说,现在,你能够把图像和其它资源嵌入到控件的DLL文件内。

  三、 增强EmailContact Web控件

  本文中的定制EmailContact Web控件(参考图1)允许在你的站点中加入一个"contact us"表单,它具有完整的电子邮件功能。在本文中,我将使用该功能增强这一控件。


图1.缺省状态下的EmailContact控件

  四、 一个新的基类

  以前,开发者都是从WebControl类派生他们的可视化Web控件。我之所以在此使用了"可视化"一词是因为,典型情况上,没有在浏览器中生成任何内容的控件都是派生自Control类。这一点并没有改变-你应该继续使用该Control类来派生任何这样的非可视化控件-它们执行不可见功能或在浏览器中生成除可视化HTML内容之外的任何其它内容。而且,在开发可视化Web控件时,你还应该继续使用WebControl类。然而,我们所开发的大多数复合控件都是为了利用现有控件的功能。在这种情况下,你应该总是从WebControl类进行派生,但是你还要记住另外一些有关细节-否则的话,有可能导致许多问题。

  复合控件必须实现INamingContainer接口,并且需要包括在你的控件类中。这个接口能够确保在你的控件及其可以生成的整个控件层次中的所有的HTML标签中都具有唯一的标签命名。当你在单个页面上存在多个相同类型的复合控件的情况下,这是相当关键的。在这样的情况下,你需要确保任何生成的子元素都具有唯一的名称。忘记实现该接口能够导致各种问题的出现。

  在ASP.NET 2.0以前,复合控件开发者还需要记住在一个控件的Render方法中调用EnsureChildControls。在我以前的文章中曾经向你介绍如何重载该Render方法并且在调用基类的Render方法前调用这个方法。要使控件在Visual Studio设计时刻正确生成这一步是必要的;否则,有可能带来许多不便。