【转贴】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)
上一篇 2022年7月4日 上午9:16
下一篇 2022年7月4日 上午9:16


相关推荐

  • 栈 队列 优先队列

    栈 队列 优先队列

    2021年9月27日
    52
  • 关于STM32使用LAN8720A插拔网线重连「建议收藏」

    关于STM32使用LAN8720A插拔网线重连「建议收藏」关于STM32使用LAN8720A插拔网线重连其实在做这个功能的时候大家一定要心平气和,不要认为有多复杂,多看DATASHEET,当然后面会遇到一些问题,所以在踩过坑之后,过了差不多一年了,也算是回过头来做个记录吧。1.关于LAN8720的手册解读通过查阅lan8720的数据收册:标黄部分,在寄存器映射中第一个寄存器为基本状态寄存器,然后我们通过查阅这个寄存器发现,在该寄存器的bit2中说明了,当检测网线插入的时候该位为1,否则为0。知道这个那就好办了,我们可以根据这个状态位去判断网线的接入状

    2022年6月21日
    60
  • 守护线程和非守护线程的区别以及用法_python多线程守护进程

    守护线程和非守护线程的区别以及用法_python多线程守护进程让程序更好的服务于逻辑

    2022年10月16日
    4
  • 开源二次开发:OpenClaw 自定义技能开发完整教程,从 0 到 1 打造专属 AI 工具链

    开源二次开发:OpenClaw 自定义技能开发完整教程,从 0 到 1 打造专属 AI 工具链

    2026年3月13日
    2
  • 基于Spring Security实现权限管理系统

    基于Spring Security实现权限管理系统基于 SpringSecuri 实现权限管理系统稍微复杂一点的后台系统都会涉及到用户权限管理 何谓用户权限 我的理解就是 权限就是对数据 系统的实体类 和数据可进行的操作 增删查改 的集中管理 要构建一个可用的权限管理系统 涉及到三个核心类 一个是用户 User 一个是角色 Role 最后是权限 Permission 接下来本文将介绍如何基于 SpringSecuri 0 一步一步构建起一个接

    2026年3月18日
    2
  • centos7 网络配置

    centos7 网络配置centos7刚安装,需要做一些配置才能正常上网!1.虚拟网络编辑器配置1)通过VMware菜单栏,依次点击编辑和虚拟网络编辑器2)选中VMnet8,取消勾选使用本地DHCP服务将IP地址分配给虚拟机,查看DHCP确保未启用,点击NAT设置3)查看网关IP,并记住192.168.255.2,用于网络配置文件设置2.修改mac地址如果本虚拟机为克隆机,则需要重新…

    2022年4月28日
    49

发表回复

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

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