ASP.NET 2.0服务器控件开发精要(3)

2008-02-22 09:42:36来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  (11)卸载----完成的工作与"处置"阶段相同,但是,开发人员通常在Dispose()方法中执行清除,而不处理Unload事件。

  4、小结

  服务器控件在ASP.NET 2.0框架中起着举足轻重的作用,是构建Web应用程序最关键、最重要的组成元素。对于一个优秀的开发人员,掌握服务器控件的基础知识是非常重要的。本文就服务器控件的概念、类型、生命周期等关键内容进行了介绍。希望读者能够将这些内容牢固掌握,为写出精彩的服务器控件打下良好的基础。

创建Asp.net里的服务器控件和Windows Form的控件一样,也有几种方式:

  1、 用户控件(user control)

  2、 从Control、WebControl派生的自定义控件

  3、 从已有的Asp.net服务器控件扩展

  用户控件以.ascx为扩展名,并保存为文本文件,用户控件不像从Control和WebControl派生下来的服务器控件那样需要预编译,当用户控件在.aspx页面中使用的时候,页面解析器从.aspx文件中动态地生成一个类,并且将其编译到一个装配件中。其优点有:解决了代码复用,同时每一个用户控件有自己的对象模型,其编写语言和.aspx页面的语言无关。

  从已有的Asp.net服务器控件扩展,主要是对.net原生的服务器控件的功能加强以适用我们开发和最终用户的需要。

  从Control、WebControl派生的自定义控件以编译过的类库形式部署的。

  上述的1和3在本系列中将不做讲解,在本系列中只讲解从Control、WebControl派生的服务器控件。

  我们要编写一个自定义控件,只要从Control、WebControl继承即可,Control已经实现了IComponent接口,而WebControl本身又是从Control上派生下来的,因而他们也支持组件的可视化设计。

  Render方法和HtmlTextWriter类,当我们从一个Control类派生一个Asp.net服务器控件时,Control类为我们提供了可重载的Render和一个HtmlTextWriter类型的实例,Render方法就是将服务器控件内容发送到提供的 HtmlTextWriter 对象,而HtmlTextWriter封装了HTML写文本流的功能函数。

using System;
using System.Collections.Generic;
using System.Text;

namespace ClassLibrary1
{
 public class Control1 : System.Web.UI.Control
 {
  protected override void Render(System.Web.UI.HtmlTextWriter writer)
  {
   writer.Write("I'm here.");
  }
 }

 public class Control2 : System.Web.UI.WebControls.WebControl
 {
  protected override void Render(System.Web.UI.HtmlTextWriter writer)
  {
   writer.Write("I'm here too.");
  }
 }
}

  上面的代码里我们定义了一个Contro1和Control2,他们分别从Control和WebControl继承下来,那他们之间到底有什么样的本质区别呢?先看下面的效果:


  从上面的效果我们不难看出他们之间有什么区别,WebControl类通过属性提供了对样式的支持,比如字体、高度、背景色等等。那我们什么时候来选择从Control派生,什么时候又选择从WebControl派生呢?如果控件要生成非可视化的元素或显示给非HTML客户端,就从Control派生,如SqlDataSource;如果要提供客户端生成可视化的HTML,那我们就从WebControl派生,如TextBox。
http://blog.csdn.net/tielu0144/archive/2007/02/05/1502886.aspx

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Asp.net下的对象成员数据绑定器实现

下一篇:在ASP.NET中创建安全的web站点(配置)