ASP.NET控件呈现方法的说明

时间:2010-03-17 16:57:07  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:rotected internal virtual void Render(HtmlTextWriter writer)    {    this.RenderChildren();    }       protected internal virtual void RenderChildren(HtmlTextWriter writer)    {    //呈现子控件    }     &n...
  正文:一般我们撰写ASP/ target=_blank class=infotextkey>asp.NET控件都是继承Framework 已有三个基类,Control,WebControl,CompositeControl,它们之间的关系大家都很清楚,下面我就各个基类的呈现方法作一些简单的说明:
   Control,主要有以下4个方法用于呈现:
   protected internal virtual void Render(HtmlTextWriter writer)
   {
   this.RenderChildren();
   }
  
   protected internal virtual void RenderChildren(HtmlTextWriter writer)
   {
   //呈现子控件
   }
  
   public virtual void RenderControl(HtmlTextWriter writer)
   {
   //该方法为入口方法
   this.RenderControl(writer,this.xxxAdapter);
   }
  
   protected void RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   {
   if (adapter != null)
   {
   //调用相关的适配器方法
   }
   else
   {
   this.Render(writer);
   }
   } 整个呈现顺序就是:
   1.RenderControl(HtmlTextWriter writer)
   2.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   3.Render(HtmlTextWriter writer)
   4.RenderChildren(HtmlTextWriter writer)
  概念上理解就是:
  1.控件开始呈现
  2.控件是否有相关的呈现适配器,有的话就适配器调用适配器的相关呈现方法
  3.呈现子控件
  4.完成控件呈现
  题外话:关于控件适配器我基础上没用过,不过可以学习这个手法,怎么样在一个类中添加新功能而不影响原代码,既OO的基础设计原则之一 优先使用组合。
  
  WebControl:在Control的基础上增加了Style,呈现方面就是在Render(HtmlTextWriter writer) 方法中扩展了三个呈现方法,增加一个属性呈现方法,
  伪代码如下:
  
   public virtual void RenderBeginTag(HtmlTextWriter writer)
   {
   this.AddAttributesToRender(writer);
   //呈现Tag开始标记
   }
  
   protected override void Render(HtmlTextWriter writer)
   {
   //重写了Control的Render方法并增加了三个扩展方法
   this.RenderBeginTag(writer);
   this.RenderContents(writer);
   this.RenderEndTag(writer);
   }
   protected internal virtual void RenderContents(HtmlTextWriter writer)
   {
   //调用Control的呈现
   base.Render(writer);
   }
  
   public virtual void RenderEndTag(HtmlTextWriter writer)
   {
   //呈现结束标记
   }
  
   protected virtual void AddAttributesToRender(HtmlTextWriter writer)
   {
   //呈现Attribute
   }
  CompositeControl 重写了WebControl的Render(HtmlTextWriter writer),增加了设计时支持以创建子控件
   protected internal override void Render(HtmlTextWriter writer)
   {
   //如果在设计时,创建子控件,也就是在设计时增加友好体验
   if (DesignMode)
   this.EnsureChildControls();
   base.Render(writer);
   }

"ASP.NET控件呈现方法的说明"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13273.html


关键字:

关于《ASP.NET控件呈现方法的说明》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td