zoukankan      html  css  js  c++  java
  • 六:理解控件的运行机制(例:基于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();
            }
           
        }
    }
     
  • 相关阅读:
    Java-单机版的书店管理系统(练习设计模块和思想_系列 二 )
    HDOJ 1279 验证角谷猜想
    HDOJ 1266 Reverse Number(数字反向输出题)
    lucas定理
    CRT && exCRT模板
    exgcd模板
    洛谷P4774 屠龙勇士
    洛谷P1477 假面舞会
    洛谷P2704 炮兵阵地
    CF1080
  • 原文地址:https://www.cnblogs.com/liulun/p/1378943.html
Copyright © 2011-2022 走看看