Render、RenderChildren和RenderControl

Render、RenderChildren和RenderControl(1)protectedvirtualvoidRender(HtmlTextWriterwriter);  该方法用于将服务器控件内容发送到提供的HtmlTextWriter对象,此对象编写将在客户端呈现的内容。在开发服务器控件时,可以重写此方法以呈现服务器控件。  (2)protectedvirtualvoidRenderChildren(HtmlTextW…

大家好,又见面了,我是你们的朋友全栈君。

(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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162036.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【模式识别】多层感知器 MLP[通俗易懂]

    【模式识别】多层感知器 MLP[通俗易懂]由前面介绍看到,单个感知器能够完成线性可分数据的分类问题,是一种最简单的可以“学习”的机器。但他无法解决非线性问题。比如下图中的XOR问题:即(1,1)(-1,-1)属于同一类,而(1,-1)(-1,1)属于第二类的问题,不能由单个感知器正确分类。即在Minsky和Papert的专著《感知器》所分析的:感知器只能解决所谓一阶谓词逻辑问题:与(AND),或(OR)等,而不能解决异或(XOR)…

    2022年6月18日
    29
  • Java安全之Commons Collections2分析

    Java安全之CommonsCollections2分析首发:Java安全之CommonsCollections2分析0x00前言前面分析了CC1的利用链,但是发现在CC1的利用链中是有版

    2021年12月12日
    49
  • SCI论文投稿信(Cover Letter)的写法及模版

    SCI论文投稿信(Cover Letter)的写法及模版一、写法投稿信(CoverLetter)应该简述所投稿件的核心内容、主要发现和意义,拟投期刊,对稿件处理有无特殊要求等(如“nottoreview”list)。另外,请附上主要作者的中文姓名、通讯地址、电话、传真和e-mail地址。此外有的杂志要求推荐几位审稿人及其联系方式。以及谁已经阅读过该文(当然是牛人)。一般来说,杂志通常要求说明你论文研究的意义,以及与这个杂志的相关性,另外还有…

    2022年5月8日
    128
  • html完整网页实例简单_html简单网页代码解读

    html完整网页实例简单_html简单网页代码解读要完成一个网页的制作其实本质上是很简单的,本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,同样的也有js的动画效果,这个实例比较全面,有助于同学的学习。本实例仅供参考,其他行为自负。本实例分为四篇来观看。一共有一个HTML文件,三个css样式表,三个js,有16张图片。其中img里面的图片可以自行下载,或用本实例里面的图片。测试项目是建议大家用谷歌…

    2022年9月23日
    1
  • 如何提高memcache的缓存命中率

    如何提高memcache的缓存命中率

    2022年2月13日
    55
  • Docker卸载_退出docker容器命令

    Docker卸载_退出docker容器命令##1)进入docker的安装目录cd/usr/local/bin/##2)删除与docker相关的文件夹sudorm-rfdocker*sudorm-rfcom.docker.*sudorm-rfhub-tool*sudorm-rfkube*sudorm-rfvpnkit*完成!

    2025年10月5日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号