ASP.NET控件呈现方法的说明
点击次数:27 次 发布日期:2008-11-26 10:28:00 作者:源代码网
|
源代码网推荐 一般我们撰写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); 源代码网推荐 } 源代码网推荐 源代码网推荐 以上是三个基类控件基本呈现过程,不足的大家补充!! 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
