创建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。

转载于:https://www.cnblogs.com/greatwang/archive/2008/06/06/1214935.html

ASP.NET服务器控件编程之热身运动相关推荐

  1. asp.net服务器控件与html服务器控件的区别

    在ASP.NET开发中用到的控件可以分为三种:传统html控件(比如<input type="button"/>).html服务器控件(比如<input type ...

  2. ASP.NET 服务器控件授权

    原文:http://msdn.microsoft.com/zh-cn/library/aa479017.aspx 摘要:了解 ASP.NET 服务器控件的授权要求,了解可用于 .NET 框架版本 1. ...

  3. 关于 asp.net 服务器控件几个 ID 的说明

    对于每一个服务器控件System.Web.UI.Control 都具有 ID,UniqueID,ClientID 三个属性,那么这个三者到底有河关系,在客户端HTML中又是如何对应呈现的呢? ID:获 ...

  4. Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)

    本文作者:HAI_ 0×00 前言 来看看我们今天的主题. 让你自由自在脱壳的热身运动. 现在很多第厂家都是使用第三方的加固方式来进行加固的.或者使用自己的加固方式进行加固. 那么我们必不可少的就是脱 ...

  5. ASP.NET服务器控件的生命周期分析

    本文实例分析了ASP.NET服务器控件的生命周期.分享给大家供大家参考.具体如下: (1)初始化----在此阶段中,主要完成两项工作:一.初始化在传入Web请求生命周期内所需的设置:二.跟踪视图状态. ...

  6. Asp.Net数据库编程-10条最优方法[翻译]

    Asp.Net数据库编程-10条最优方法[翻译] 原文标题:Using Data with ASP.Net - 10 of my 'Best Practices' 原文链接:http://www.de ...

  7. Asp.Net服务器控件开发的Grid实现(二)Html标记渲染

    我们先来实现Grid类,代码如下: Grid.cs using System; using System.Collections.Generic; using System.ComponentMode ...

  8. ASP.NET服务器控件开发(2)--继承WebControl类

    文章作者:高维鹏(Brian) 文章出处:http://www.cnblogs.com/gaoweipeng 前篇文章简单介绍了如何封装Html来创建我们的ASP.NET服务器控件.这篇说说如何继承A ...

  9. 如何在ASP.NET服务器控件库中嵌入JavaScript脚本文件 [适用于.NET 2.0]

    需求:建立一个类库TestControls,这个类库中包含若干ASP.NET服务器控件,其中有一些会调用客户端的JavaScript函数,把这些函数放入TestScript.js中. 其实是很简单的需 ...

最新文章

  1. 七天入门linux,RHCE认证学习笔记-第七天
  2. 常用的 cocos2d-x 游戏开发工具
  3. mysql 5.5.46_MySQL 5.5.46源码安装
  4. 上传文件显示进度条_文件上传带进度条进阶-断点续传
  5. springboot使用AOP打印日志信息
  6. 关于波峰波谷趋势分割(想象中的方法),判断趋势,突然来想到的,记下来,没有实验。以便以后用于分割...
  7. 基于Linux平台的libpcap源码分析和优化
  8. 免费下载百度文库文档
  9. CSS 实现三级导航目录
  10. 礼物:《红孩儿引擎内功心法修练与Cocos2d-x》之结点系统(场景,层,精灵)
  11. Python代码爬取下载应用宝所有APP软件
  12. FinalShell连接不上LinuxCentOS-7的解决方案
  13. 数据库底层原理-------数据结构
  14. 存储容量和IOPS的关系
  15. 初学者建模和布线技巧
  16. mbedtls安装与入门
  17. 推荐系统中的biasdebias(一):bias的成因、类型和影响
  18. PDF转CAD怎么弄?PDF文件转换快速入门
  19. @click.stop和@click.prevent区别
  20. appid 登录不上appstore

热门文章

  1. 自适应分辨率的大屏的工具推荐
  2. Win7系统如何设置QQ监控孩子上网(图文)
  3. linux查看内存的几个命令
  4. 漫谈socket-io的基本原理
  5. Elasticsearch中term和terms
  6. 输入框实时搜索优化,减少请求次数、取消无用请求
  7. 浅谈决策树算法以及matlab实现ID3算法
  8. Sass 和 SCSS 有什么区别?
  9. chrome无法使用pac代理的解决方法
  10. CSDN博客 - Markdown:博客内图片缩放、删减水印等的相关操作