六:理解控件的运行机制(例:基于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();
        }
       
    }
}

 

时间: 2024-09-20 05:56:35

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

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

组合控件与WebControl控件的事件和属性相差不大组合控件,顾名思义就是把一些控件组合起来形成一个控件这个控件将包含这些控件称为他的子控件 CompositeControl类实现了INameContainer接口这样使得复合控件下的子控件都根据各自的层级关系生成唯一的客户端标识不至于产生重复的ID 组合控件比较重要的方法是:1.EnsureChildControls此方法判断属性ChildControlsCreated是否为true如果不是将执行下面的事件2.CreateChildContr

五:理解控件的运行机制(例:基于Control命名空间的简单控件)

一:先用最简短的话说点理论的1.asp.net中所有的标准控件都可以重写 2.和控件相关的命名空间有 System.Web.UI.Control是所有控件的基类只提供简单的呈现逻辑,不支持样式表 System.Web.UI.WebControls.WebControl继承自Control支持控件外观 System.Web.UI.WebControls.CompositeControl继承自WebControl类派生出多个控件合成的复合控件 3.控件树的实现原理首先Page类本身就是一个控件,它继

四:理解Page类的运行机制(例:基于PageStatePersister的页面状态存取)

 有人说类似gridview datalist这样的控件最好不要用在高并发,IO大的网站中企业应用中为了快速开发到可以用一用因为这是一类"沉重"的组件我们姑且不谈这种看法的正确性(我个人觉得有道理)只谈它为什么笨重: 因为这些控件给页面带来了大量的viewstate<input type="hidden" name="____VIEWSTATE" id="____VIEWSTATE" value=这就是页面状态一个页面里

二:理解ASP.NET的运行机制(例:基于HttpHandler的URL重写)

url重写就是把一些类似article.aspx?id=28的路径重写成 article/28/这样的路径 当用户访问article/28/的时候我们通过asp.net把这个请求重定向到article.aspx?id=28路径有两种方法可以做这件事情 一:基于HttpModule的方案这个方案有有缺点,具体缺点以后再谈我曾写过一篇文章<不用组件的url重写(适用于较大型项目) >就是按这个模式写的 二:基于HttpHandler的方案我们这个例子就是按这个方案做的我们接下来就按这种方式做这个例

一:理解ASP.NET的运行机制(例:通过HttpModule来计算页面执行时间)

一:简要介绍一下asp.net的执行步骤 1.IIS接收到客户请求 2. IIS把请求交给aspnet_isapi.dll处理 3.(如果是第一次运行程序)装载bin目录中的dll 4.(如果是第一次运行程序)读取各级webconfig中的配置 5.(如果是第一次运行程序)编译装载global.asax,初始化HttpApplication实例 6.创建响应请求的HttpContext 7.创建承载响应结果的HttpTextWriter 8.找到合适的HttpHandler(asp.net页面)

深入理解Android Instant Run运行机制

Instant Run Instant Run,是android studio2.0新增的一个运行机制,在你编码开发.测试或debug的时候,它都能显著减少你对当前应用的构建和部署的时间.通俗的解释就是,当你在Android Studio中改了你的代码,Instant Run可以很快的让你看到你修改的效果.而在没有Instant Run之前,你的一个小小的修改,都肯能需要几十秒甚至更长的等待才能看到修改后的效果. 传统的代码修改及编译部署流程 传统的代码修改及编译流程如下:构建整个apk → 部

基于MFC的ActiveX控件,如何实现运行时,用户可动态调整控件大小和位置?

问题描述 基于MFC的ActiveX控件,如何实现运行时,用户可动态调整控件大小和位置? 基于MFC的ActiveX控件,如何实现运行时,用户可动态调整控件大小和位置? 请大神们帮帮忙.在线等. 解决方案 调整控件大小是宿主程序的事,不关activex 即便不写任何代码,都是可以调整大小的,只是如果你不写代码,调整控件大小,里面的内容不会跟着缩放,而是保持不变,如果尺寸变小,右下角的东西会看不见. 解决方案二: 在OnSize中写可动态调整控件大小和位置的代码 解决方案三: 有没有相关的列子可供

068_《Delphi7控件实用程序设计100例》

<Delphi7控件实用程序设计100例> Delphi 教程 系列书籍 (068) <Delphi7控件实用程序设计100例> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf 作者: 段兴 宋雷 张敬韶 孙丽娜 丛书名: 程序设计实例丛书 出版社:人民邮电出版社 ISBN:7115112975 上架时间:2003-7-21 出版日期:2003 年6月 开本:16开 页码:332 版次:1-1 内容简介 本书选取了利用Delphi 7开发的控件方面

090_《Delphi6控件实用程序设计100例》

<Delphi6控件实用程序设计100例> Delphi 教程 系列书籍 (090) <Delphi6控件实用程序设计100例> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2 Part3 作者: 段兴 丛书名: 数据库与控件程序设计实例丛书 出版社:人民邮电出版社 ISBN:7115106290 上架时间:2002-11-4 出版日期:2002 年10月 开本:16开 页码:330 版次:1-1 内容简介 本书选取了利用Delph