Render RenderContents RenderControl 三个方法的区别(转)

ASP.NET控件渲染流程
本文介绍了ASP.NET中控件的渲染过程,包括RenderControl、Render等关键方法的执行顺序和内部调用关系。通过一个具体示例展示了如何通过重写这些方法来自定义控件的呈现方式。

控件生命周期的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>作为控件起始和结束标记的, 下面是没有重写标记的一个例子的默认显示,


下面以一个例子来演示使用上面几个方法, 新建一个RenderOrderControl.cs Web控件类, 重载以下几个方法, 并填充相应语句, 修改后代码如下所示 :

ContractedBlock.gifExpandedBlockStart.gifCode
/// <summary>

        
/// Render方法执行顺序: 3

        
/// </summary>

        
public override void RenderBeginTag(HtmlTextWriter writer)

        {            

            
//base.RenderBeginTag(writer);

            writer.AddAttribute( HtmlTextWriterAttribute.Id, 
this.ID);

            writer.RenderBeginTag(HtmlTextWriterTag.Div);

        }

        
/// <summary>

        
/// Render方法执行顺序: 4

        
/// </summary>

        
protected override void RenderContents(HtmlTextWriter output)

        {

            output.Write(Text);

        }

        
/// <summary>

        
/// Render方法执行顺序: 5

        
/// </summary>

        
public override void RenderEndTag(HtmlTextWriter writer)

        {

            
//base.RenderEndTag(writer);

            writer.RenderEndTag();

    }

 


上面代码仅Render出控件Text属性文本. 另外, 重写了控件起始和结尾标签

转载于:https://www.cnblogs.com/DeadlyRemind/archive/2009/02/19/1393938.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值