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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java中常用的API[通俗易懂]

    Java中常用的API[通俗易懂]1.Calendar类(日期与时间处理)使用情况:publicstaticvoidmain(String[]args){Calendarc=Calendar.getInstance();intyear=c.get(Calendar.YEAR);intmonth=c.get(Calendar.MONTH)+1;intday=c.get(Calendar.DATE);intweek

    2022年7月8日
    23
  • 直流无刷电机如何驱动(直流无刷电机驱动电路)

    根据BLDC厂家提供的表格通过控制六个MOS来驱动直流无刷电机旋转。

    2022年4月11日
    47
  • PHP正则表达式_python正则匹配字母

    PHP正则表达式_python正则匹配字母一、正则表达式语法(Perl风格)1、模式规则  /php/字符串前后加上两条斜杠即可2、匹配函数  preg_match(‘/php/’,php)  参数1模式  参数2字符串二、正则表达式中的元素介绍  1、正则表达式中包含三种元素分别为:量词、元字符、修饰符  2、前导字符串:就是符号前面的一个字符或字符串量词…

    2025年8月22日
    2
  • 怎么成为一个比较成功的IT人士

    怎么成为一个比较成功的IT人士

    2021年8月19日
    43
  • ibm服务器如何装系统_ibm引导盘安装系统步骤

    ibm服务器如何装系统_ibm引导盘安装系统步骤小编了解到ibm服务器系统安装的方法是有别于安装其他品牌的服务器和台式机,而ibm笔记本一键启动u盘的快捷键是:F12;下面小编就把ibm服务器系统安装的方法讲解给大家听。首先需要准备的工具:两个大于4G的U盘,一个用来刻录IBM的官方引导镜像,一个用来刻录2008系统的镜像;软件方面,需要一个软碟通(UItralISO)软件。(上图是软件的图标,下图是软件打开的页面)1、打开软件后插入U盘,在软…

    2022年10月4日
    2
  • idea项目打包成war_war文件打成war包

    idea项目打包成war_war文件打成war包IntelliJIDEA将项目打包war包1、准备工作IntelliJIDEA开发工具可以正常运行的Java项目2、打包war包流程使用快捷键Ctrl+Alt+Shift+s或者鼠标点击选中项目名按F4打开ProjectStructure界面选择Artifacts,点击右边+,依次选择WebApplication:Archive和For’myP…

    2025年7月29日
    5

发表回复

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

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