每个页面都有一个控件树,代表本页面所拥有的所有子控件,页面控件就是控件树的根,为了生成控件树,页面将建立一个HtmlTextWriter类的实例,在这个实例中封装了相应流,接着页面会把HtmlTextWriter对象传递给RenderControl,RenderControl会检查控件的Visible属性是否为真,如果是真,RenderControl会调用Render方法,而Render方法会去调用RenderContents,RenderContents方法负责将控件的内容呈现到指定的编写器中,如果控件有子控件的话,Render方法又会把HtmlTextWriter传递给RenderChildren方法,RenderChildren方法负责生成控件的子控件。

控件生命周期的Render阶段,主要将控件标记和字符文本输出到服务器控件输出流中。在这个阶段可以直接写HTML标记,也可以调用每个控件都有的RenderControl方法到输出流。在WebControl基类中,以Render开头的呈现方法有如下几个:

Ø RenderControl(HtmlTextWriter writer)

Ø Render(HtmlTextWriter writer)

Ø RenderBeginTag(HtmlTextWriter writer)

Ø RenderContents(HtmlTextWriter output)

Ø RenderEndTag(HtmlTextWriter writer)

以上几个Render方法并不是毫无联系的,它们的执行顺序是从上往下,并且有嵌套的调用关系。其中在RenderControl方法内部会调用Render方法,在Render方法内部会依次调用RenderBeginTag, RenderContents和RenderEndTag。

其中RenderControl和Render是Control基类中的方法,因为WebControl本身也是继承Control的。一般在开发基本控件时,我们只需重写RenderContents方法即可,在此方法中可以把控件HTML文本标记和其他内容写到输出流中。

另外,还有两个可以重载的方法 RenderBeginTag和RenderEndTag。这两个方法执行时刻点是分别在Render控件内容之前和之后。可以重写这两个方法自己定义控件的起始和结束标记。默认情况下控件是以<Span></Span>作为起始和结束标记的,

出处:http://blog.csdn.net/ChengKing/archive/2009/01/01/3678388.aspx

该文章经过本人整理所得,欢迎转载,转载时请加上本文地址;本文基于署名 2.5 中国大陆许可协议发布,请勿演绎或用于商业目的,但是必须保留本文的署名张志涛(包含链接如您有任何疑问或者授权方面的协商,请给我留言。

转:Render RenderContents RenderControl 三个方法的区别相关推荐

  1. Render RenderContents RenderControl 三个方法的区别

    每个页面都有一个控件树,代表本页面所拥有的所有子控件,页面控件就是控件树的根,为了生成控件树,页面将建立一个HtmlTextWriter类的实例,在这个实例中封装了相应流,接着页面会把HtmlText ...

  2. 线程中断的三个方法的区别(interrupt/isInterrupted/interrupted)

    线程中断的三个方法的区别(interrupt/isInterrupted/interrupted)-总结自Java编程之美 方法定义 void interrupt():中断调用该方法的实例线程对象.当 ...

  3. 在 C# 中,(int) ,Int32.Parse() 和 Convert.toInt32() 三种方法的区别

    在 C# 中,(int),Int32.Parse() 和 Convert.toInt32() 三种方法有何区别? int 关键字表示一种整型,是32位的,它的 .NET Framework 类型为 S ...

  4. js--《js缓存的三种方法及区别与特点》

    js缓存的三种方法与特点: ①H5本地存储sessionStrong: sessionStrong:临时的会话储存,只要当前的会话窗口未关闭,存储的信息就不会丢失,即使页面刷新或在编辑器中更改代码,存 ...

  5. JQ中val(),html(),text()三种方法的区别

    JQ中val(),html(),tex()三种方法的区别是内容不一样 text(参数); 有参数是改变他的文本,无值是获取他的文本 var(); 有参数是改变他的val属性,无值是获取他的val属性 ...

  6. 在matlab中怎样安装dh包,建立DH模型的三种方法以及区别

    目录 1.建立DH模型的三种方法 2.SDH和MDH的应用范围 3. SDH和MDH的区别 0.SDH是ZX类变换,MDH是XZ类变换 1.SDH和MDH都是强调把坐标系建立在连杆上 2.举个例子说明 ...

  7. Excel规划求解Solver:三种方法的区别

    Excel Solver作为常用的最优解解决工具,在选择解决方法(solving method)的时候有三种选项,这三种选项有什么区别?什么时候该选择哪种方法?在本文做综合解释 目录 1. GRG N ...

  8. div显示与隐藏的三种方法及其区别

    方法一:设置样式属性opacity /* 隐藏 */opacity: 0;/* 显示 */opacity: 1; 区别:隐藏的时候,位置保留, 元素还在 ,只是不可见. 方法二:设置样式display ...

  9. 浅谈PHP的Public、Protected、Private三种方法的区别

    public:权限是最大的,可以内部调用,实例调用等. protected: 受保护类型,用于本类和继承类调用. private: 私有类型,只有在本类中使用. <?php error_repo ...

最新文章

  1. Struts2标签库
  2. java webpack_webpack将对象暴露为全局
  3. php mysql 内存溢出_关于MySQL的整型数据的内存溢出问题的应对方法_MySQL
  4. pytorch 之 冻结某层参数,即训练时不更新
  5. Linux 下 MySQL 启动与关闭 说明
  6. Google Appengine登台服务器操作方法
  7. MVC架构 -- 初学试水选课管理系统
  8. struts-config message-resources配置问题总结
  9. svn 合并问题 MERGE of '/svn/web': 200 OK (http://xx.xx.xx.xx)
  10. 从右边开始放_幸福的生活,从入住新房开始,效果很漂亮,忍不住给大家晒晒全屋...
  11. 20172310 《程序设计与数据结构》实验二报告
  12. 纯新手DSP编程--5.16--目标和主机设置
  13. Linux下修改PATH的方法
  14. linux筛选方式,使用grep实现精确过滤的五种方法
  15. aardio利用鼠标钩子响应文件拖动过程(一)
  16. 计算机系统结构模拟试卷3,计算机系统结构全真模拟试卷.pdf
  17. python3调用arcpy地理加权回归_分析地理加权回归分析结果的操作方法
  18. 二维码:MP3音频世界的进化
  19. 使用PS给PDF文件加水印
  20. 2022年京东618店庆活动优惠力度怎么样?

热门文章

  1. uni-app —— 小程序加入购物车实现过程
  2. 虚拟现实技术在神经外科教学中的应用
  3. Python数码管之十进制转十六进制
  4. html5 audio设置currentTime
  5. 解决gd32 延时2s 错误FFFFFFFF DCD 0xFFFFFFFF ; ?Undefined和HardFault_Handler BusFault_Handler
  6. mrtg监控linux主机的甚至,依赖SNMP的MRTG监控--linux
  7. 基于Java的手机销售系统
  8. 【电子学会】2020年09月图形化三级 -- 魔术表演“开花”
  9. hog特征提取python代码_HOG特征提取
  10. Excel-VBA:不同Sheet间的列、行复制