Render、RenderChildren和RenderControl
(1) protected virtual void Render(HtmlTextWriter writer);
该方法用于将服务器控件内容发送到提供的HtmlTextWriter对象,此对象编写将在客户端呈现的内容。在开发服务器控件时,可以重写此方法以呈现服务器控件。
(2) protected virtual void RenderChildren(HtmlTextWriter writer);
该方法用于将服务器控件子级的内容输出到提供的HtmlTextWriter对象,此对象编写将在客户端呈现的内容。该方法通知ASP.NET呈现页中的所有Active Server Pages代码。如果页上没有任何ASP代码,此方法将呈现服务器控件的所有子控件。
(3) protected virtual void RenderControl(HtmlTextWriter writer);和protected void RenderControl (HtmlTextWriter writer,ControlAdapter adapter)
RenderControl有两个重载方法,它们都用于将服务器控件的内容输出到所提供的HtmlTextWriter对象中。如果已启用跟踪功能,则存储有关控件的跟踪信息。如果服务器控件的Visible属性设置为true,该方法将确定是否启用页的跟踪功能。如果启用,它将存储与控件有关的跟踪信息,同时向页呈现服务器控件的内容。另外,前一个重载方式是ASP.NET 2.0从ASP.NET 1.0中继承而言,后一个重载方式是ASP.NET 2.0新增的。后者具体使用提供的ControlAdapter对象将服务器控件内容输出到提供的HtmlTextWriter对象。其中参数adapter是ControlAdapter类型,它用于定义呈现的ControlAdapter。当实现在各种设备和浏览器中运行的服务器控件时,该方法比较常用。
以上3个方法看起来好像是独立的3个方法,然而,实际上它们之间存在密切的联系。读者可通过阅读以下示意性代码,从而理解它们之间的关系。
//RenderCotrol方法基本实现
public void RenderControl(HtmlTextWriter output)
{
if(Visible)
{
Render(output);
}
}
//Render方法基本实现
protected virtual void Render(HtmlTextWriter output)
{
RenderChildren(output);
}
//RenderChildren方法基本实现
protected virtual void RenderChildren(HtmlTextWriter output)
{
foreach(Control c in Controls)
{
c.RenderControl(output);
}
}
如上代码所示,其中列举了RenderControl、Render、RenderChildren方法的实现思路。显而易见的是,在控件呈现过程中,这三个方法都在起着作用,而且使用了一个简单的递归调用过程。大体而言,可以理解为:
(1)页面框架建立一个HtmlTextWriter类的实例;
(2)页面框架将这个实例对象传递给RenderControl方法;
(3)RenderControl方法检查控件的可视属性Visible是否为true。如果为true,RenderControl方法将调用Render方法;如果为false,则不呈现该控件和其子控件;
(4)Render方法执行默认实现,调用RenderChildren方法;
(5)RenderChildren方法按照默认实现中的设定调用每个子控件的RenderControl方法;
实际上,如果读者短时间内不能理解以上过程也没有很大的关系。对于初学者而言,关键是要记住最重要、最常用的是Render方法。控件开发者可以通过重写Render方法完成呈现控件的任务。
转载于:https://www.cnblogs.com/shengel/archive/2008/06/03/1212636.html
Render、RenderChildren和RenderControl相关推荐
- 记不住ASP.NET页面生命周期的苦恼
介绍 对于ASP.NET开发者,理解ASP.NET的页面生命周期是非常重要的.主要是为了搞明白在哪里放置特定的方法和在何时设置各种页面属性.但是记忆和理解页面生命周期里提供的事件处理方法(method ...
- Asp.net页面生存周期
# 事件或方法 功能 描述 1 Init 事件 页面初始化 初始化设置. 2 LoadViewState 方法 加载视图状态 填充ViewState属性. 3 LoadPostData 方法 处理回发 ...
- (转)教你记住ASP.NET WebForm页面的生命周期
对于ASP.NET Webform的开发者,理解ASP.NET Webform的页面生命周期是非常重要的.主要是为了搞明白在哪里放置特定的方法和在何时设置各种页面属性.但是记忆和理解页面生命周期里提供 ...
- NET 页面生命周期
对于 ASP.NET 开发者,理解 ASP.NET 的页面生命周期是非常重要的.主要是为了搞明白在哪里放置特 定的方法和在何时设置各种页面属性.但是记忆和理解页面生命周期里提供的事件处理方法 (met ...
- 自定义treeview控件,实现右键菜单编辑功能
试过用复合控件包含treeview控件,但是失败,这次在右键菜单调用tree的回发js成功可以在页面后台绑定被编辑的节点,后台3个函数都可以编辑用c#传的参数e.mynode就是右键菜单的选中的节点 ...
- CreateChildControls、EnsureChildControls、RenderControl、Render、RenderChildren
EnsureChildControls()方法中判断是否已生成控件集合,如果未生成,则调用CreateChildControls()方法. 页面在载入视图状态(LoadViewStateRecursi ...
- Render RenderContents RenderControl 三个方法的区别
每个页面都有一个控件树,代表本页面所拥有的所有子控件,页面控件就是控件树的根,为了生成控件树,页面将建立一个HtmlTextWriter类的实例,在这个实例中封装了相应流,接着页面会把HtmlText ...
- 转:Render RenderContents RenderControl 三个方法的区别
每个页面都有一个控件树,代表本页面所拥有的所有子控件,页面控件就是控件树的根,为了生成控件树,页面将建立一个HtmlTextWriter类的实例,在这个实例中封装了相应流,接着页面会把HtmlText ...
- 浅谈ASP.NET中render方法
2011-06-08 11:36 runyl 博客园 我要评论(1) 字号:T | T Control.Render 方法是将服务器控件内容发送到提供的HtmlTextWriter 对象,此对象编写将 ...
最新文章
- CNN数玉米穗--TasselNet: Counting maize tassels in the wild via local counts regression network
- 引用借以记录借鉴 实现记住密码和自动登录功能
- mysql重置auto_increment字段
- Golang——数据类型使用细节详解
- Ubuntu16.04下tensorflow安装
- Modularity(模块化-AMD规范)
- python 经典函数
- 微信小程序组件slider
- 路由器的软件测试,路由器测试方法 - 软件测试网 _领测软件测试网站-中国软件测试技术第一门户...
- 端口转发、映射、代理
- SaaS微信小程序电商系统,一键生成小程序【源码分享】
- RBF神经网络-高斯核函数
- Vue----组件库
- 晶体三极管共射放大电路(共射基本放大电路)的研究与设计
- Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is inse
- android 8 平板,击败Android平板:Windows 8志在必得
- VUE MVVM实现
- 把Eclipse修改为黑色主题!配色方案详细图文并茂可供下载!
- 基于Android Studio开发的笔记APP
- 暴跌27%!科通芯城遭沽空机构狙击 被指“横跨十年的世纪骗案”