快速业务通道

ASP.NET服务器控件开发(2)--继承WebControl类

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
从 WebControl 派生控件并呈现单个元素时,应重写 RenderContents 方法(而不是 Render 方法),以呈现控件标记中的内容。在呈现控件及其样式属性的开始标记之后,WebControl 的 Render 方法将调用 RenderContents。如果重写 Render 方法以写入内容,则控件将丢失生成到 WebControl 的 Render 方法中的样式呈现逻辑。

如果我们将上篇的代码复制到这里,也能得到同样的效果。这里就不做演示了。

WebControl类为开发人员提供了几个特殊的方法,来完成我们对标注服务器控件的开发:

AddAttributesToRender(HtmlTextWriter.writer):WebControl的子类应该重写该方法,以便包含用于呈现最外层HTML元素的HTML属性的代码块

RenderBeginTag(HtmlTextWriter writer):WebControl的子类应该重写该方法,以便包含用于呈现最外层HTML元素的打开标记的代码块

RenderContents(HtmlTextWriter writer): WebControl的子类应该重写该方法,以便包含用于呈现最外层HTML元素的打开和关闭标记之间嵌套的HTML的代码块。

RenderEndTag(HtmlTextWriter writer):WebControl的子类应该重写该方法,以便包含用于呈现最外层HTML元素的关闭标记的代码块

实现WebControl类的Render方法:

protected internal override void Render(HtmlTextWriter writer)

{

  RenderBeginTag(writer);

  RenderContents(writer);

  RenderEndTag(writer);

}

AddAttributesToRender方法中发生了什么。该方法将在RenderBeginTag方法中被调用。

具体的实例在这里就不做了,给大家一个参看的例子。

简单应用:

ASP.NET给我们提供了很多现成的控件,比如Label,button,textbox等等。在平时的开发中,我们完全可以不继承Webcontrol类,直接继承它下面控件的子类,这样更有助于我们项目中的应用和开发。下面说个以前在项目中用到的小实例。

namespace MyTextBox
{
    [DefaultProperty("Text"), ToolboxData("<{0}:BrianTextBox runat=server></{0}:BrianTextBox>"), Designer("System.Web.UI.Design.WebControls.PreviewControlDesigner, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
    public class BrianTextBox : System.Web.UI.WebControls.TextBox
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        public BrianTextBox()
            : base()
        {
            base.Attributes.Add("onfocus", "this.className=''" + onFocus + "'';");
            base.Attributes.Add("onblur", "this.className=''" + onBlurCss + "'';");
            base.CssClass = Class;
        }

        private string _onFocusCss = "colorfocus";
        [Bindable(true), Category("Appearance"), Description("文本框获取焦点时触发")]
        /// <summary>
        /// 获取焦点时样式
        /// </summary>
        public string onFocus
        {
            get { return _onFocusCss; }
            set { _onFocusCss = value; }
        }

        private string _onBlurCss = "colorblur";
        [Bindable(true), Category("Appearance"), Description("文本框失去焦点

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号