• Render RenderContents RenderControl 三个方法的区别


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

    该文章经过本人整理所得,欢迎转载,转载时请加上本文地址;本文基于署名 2.5 中国大陆许可协议发布,请勿演绎或用于商业目的,但是必须保留本文的署名张志涛(包含链接如您有任何疑问或者授权方面的协商,请给我留言
  • 相关阅读:
    VC++ 读取UTF-8和ANSI编码文件
    Swift中Singleton的实现
    Swift详解之NSPredicate
    swift中的as?和as!
    Swift中的init方法
    Swift属性
    罗列系统中的所有字体
    Swift 中的Range和NSRange不同
    In line copy and paste to system clipboard
    苹果开发者账号那些事儿(一)
  • 原文地址:https://www.cnblogs.com/zhangzt/p/1791271.html
Copyright © 2020-2023  润新知