六:理解控件的运行机制(例:基于WebControl命名空间的控件)

Control类的Render方法在WebControl类中被被分成三部分
1:RenderBeginTag,呈现标签的开始
2:RenderContents,呈现标签的内容
3:RenderEndTag,呈现标签的结束

一般情况下不重写RenderBeginTag和RenderEndTag
RenderBeginTag生成什么样的标签
由WebControl.TagKey和WebControl.TagName决定
默认的TagKey是Span
(假设你想直接输出文本,那么你重写的TagKey是Unknown,TagName是string)

WebControl提供一个AddAttributeToRender方法
此方法在RenderBeginTag之前执行
我们可以重写这个方法来初始化标签的样式
(注意重写此方法一定要初始化基类base.AddAttributeToRender(yourHtmlTextWriter))

看代码

using  System;
using  System.Collections.Generic;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Text;

namespace  hellowControl
{
    
public   class  HellowControl:WebControl
    {
        
// 重写TagKey属性,让他生成div的标签
         protected   override  HtmlTextWriterTag TagKey
        {
            
get
            {
                
return  HtmlTextWriterTag.Div;
            }
        }
        
// 重写AddAttributesToRender方法,此方法在RenderBeginTag之前发生
         protected   override   void  AddAttributesToRender(HtmlTextWriter writer)
        {
            
base .AddAttributesToRender(writer);
            writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, 
" center " );
        }
        
protected   override   void  RenderContents(HtmlTextWriter writer)
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Src, 
" noimage_s.jpg " );
            writer.RenderBeginTag(HtmlTextWriterTag.Img);
            writer.RenderEndTag();
        }
       
    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值