WebControl的Reading方法

WebControl的Reading方法有Render,RendControl,RendChildren.
下面以Page类为例,(Page类也由Control类派生)

WebControl的Reading方法_第1张图片

 

public   void  RenderControl(HtmlTextWriter writer)
{
   
if(Visible)
     

        Render(writer);
     }

}


protected   virtual   void  Render(HtmlTextWriter writer)
{
  RenderChildren(writer);
}


protented 
virtual   void  RenderChildren(HtmlTextWriter writer)
{
  
foreach(Control c in Controls)
    
{
        c.RenderControl(writer);
     }

}


每一个页面都有一个控件树,代表页面所拥有的子控件,为 了生成控件树,页面需要建立一个HtmlTextWriter类的实例,这个实例封装了响应流,接着页面将这个HtmlTextWriter对象传递给RenderControl方法,RenderControl方法 检查控件地Visible属性是否为真,若为真,RenderControl调用自己的Render方法,Render方法默认的调用RenderChildren方法,RenderChidren方法又默认的调用这个控件的子控件的RenderControl方法,通过这种递归的调用,就可以生成控件树,除了Visble属性为假的控件,控件树种的控件都会最终生成,即生成Html,显示于浏览器。

你可能感兴趣的:(html,浏览器)