【转贴】Render RenderContents RenderControl 三个方法的区别

【转贴】Render RenderContents RenderControl 三个方法的区别每个页面都有一个控件树,代表本页面所拥有的所有子控件,页面控件就是控件树的根,为了生成控件树,页面将建立一个HtmlTextWriter类的实例,在这个实例中封装了相应流,接着页面会把HtmlText

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

每个页面都有一个控件树,代表本页面所拥有的所有子控件,页面控件就是控件树的根,为了生成控件树,页面将建立一个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

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

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

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


相关推荐

  • VSCODE 打造完美java开发环境「建议收藏」

    VSCODE 打造完美java开发环境「建议收藏」vscodeJava开发环境配置(此博客已更新,之前的排版不利于阅读)使用vscode后,你可能无法忍受eclipse:)最后更新时间:2018-07-01(博客地址)系统需安装jdk1.8,配置好环境变量JAVA_HOME打开vscode,安装java相关插件LanguagesupportforJava™forVisualStud…

    2022年7月20日
    14
  • java excel转json

    java excel转jsonpackagecom.xmg.excel;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStreamWriter;importjava.net.URL;import…

    2022年6月13日
    154
  • 2018手机号码正则表达式

    2018手机号码正则表达式最近发现各大手机运营商又增加了新的号码段,在项目中的判断手机号码的正则表达不能用了,自己搜集了一下,新写了一个正则表达式,希望有帮助。 匹配手机号码的正则表达式: ^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$ /***判断是否是手机号**@pa…

    2022年6月3日
    35
  • matlab运行结果图片如何保存_应对数据丢失最简单的方法

    matlab运行结果图片如何保存_应对数据丢失最简单的方法Matlab中图片保存的四种方法关键字:Saveas:>>saveas(gcf,[‘D:\保存的数据文件\方法1.png’])>>saveas(gcf,[‘D:\保存的数据文件\方法2′,’.png’])>>saveas(gcf,[‘D:\保存的数据文件\’,’方法3′,’.png’])Print:>>print(gcf,’-djpeg’,’C:…

    2022年9月13日
    3
  • 10000阶乘

    10000阶乘

    2022年1月12日
    50
  • phpstrom 2021.3激活码 3月最新注册码

    phpstrom 2021.3激活码 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    38

发表回复

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

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