zoukankan      html  css  js  c++  java
  • 二、服务器控件的呈现

    控件呈现是指向HTTP输出流中写入标记文本的过程。
    这里关键是对于HTMLTextWriter的使用,好好看MSDN 吧
    这里我想说的是对于使用Control类的呈现方法
    该类提供了三种用于实现控件呈现,Render、RenderChildren、RenderControl,均使用HtmlTextWriter的实例作为参数,三个方法看上去好像是独立的3个方法 ,其实不然,下面的代码可以说明三者的关系
     1public void RenderControl(HtmlTextWriter output)
     2{
     3  if(Visible)
     4{
     5  Render(output);
     6}

     7}

     8
     9
    10public virtual void Render(HtmlTextWriter output)
    11{
    12  RenderChildren(output);
    13}

    14
    15public virtual void RenderChildren(HtmlTextWriter output)
    16{
    17  foreach(Control c in Controls)
    18{
    19  c.RenderControl(output);
    20}

    21}

    因此对于了解这个很重要,下面有一个我写的一小段程序,可以帮助您理解他,这里是下载文件RenderControl
    二、WebControl类的呈现方法
     
       如果您开发的控件包含可视化元素,多数情况下使用由基类System.Web.UI.WebControls.WebControl派生。
              WebControl基类中存在两个方法Render 和RenderContents,通常情况下控件由WebControl派生,主要适用RenderContent实现呈现,很少使用Render,在WebControl中Render的实现如下:
    1protected override void Render(HtmlTextWriter output)
    2{
    3  RenderBeginTag(output);
    4  RenderContents(output);
    5  RenderEndTag(ouput);
    6}
    在WebControl基类中的RenderBeginTag方法的实现如下:
     1public virtual void RenderBeginTag(HtmlTextWriter output)
     2{
     3  AddAttributesToRender(output);
     4  HtmlTextWriterTag tagKey=TagKey;
     5  if(tagKey!=HtmlTextWriterTag.Unknown)
     6{
     7  output.RenderBeginTag(tagKey);
     8}

     9else
    10{
    11  output.RenderBeginTag(this.TagName);
    12}

    13}
    RenderContents实现如下:
    protected internal virutal void RenderContents(HtmlTextWriter outpus)
    {
      base.Render(output);
    }
    }
  • 相关阅读:
    Prism-超轻量的开源框架
    1的数目
    二叉树中和为某一值得路径
    把二叉树打印成多行
    对称的二叉树
    二叉树的下一个节点
    删除链表中重复的结点
    数组中的重复数字
    连表中环入口的节点
    把字符串换成整数
  • 原文地址:https://www.cnblogs.com/yukun/p/625183.html
Copyright © 2011-2022 走看看