如何自定义Asp.Net服务器控件

2025-10-06 01:02:01

1、启动VS2010,新建Asp.Net空白项目,如下图:

如何自定义Asp.Net服务器控件

2、在项目中添加Default.Aspx页面,该页面用于测试。

如何自定义Asp.Net服务器控件

3、在项目中添加Asp.Net服务器控件,并命名为MyWebControl,如下图:

如何自定义Asp.Net服务器控件

4、在服务器控件MyWebControl中添加如下代码:

    [DefaultProperty("Text")]

    [ToolboxData("<{0}:MyWebControl runat=server></{0}:MyWebControl>")]

    [ParseChildren(false)]

    public class MyWebControl : WebControl

    {

        public MyWebControl(): base("a")

        {

        }

        public string Href

        {

            get

            {

                String href = (String)ViewState["Href"];

                return ((href == null) ? String.Empty : href);

            }

            set

            {

                ViewState["Href"] = value;

            }

        }

        public override void RenderBeginTag(HtmlTextWriter writer)

        {

            Attributes["href"] = Href;

            base.RenderBeginTag(writer);

        }

        protected override void RenderContents(HtmlTextWriter output)

        {

            if (base.HasControls())

            {

                base.RenderContents(output);

                return;

            }

            output.Write(Href);

        }

    }

5、在Default.Aspx页面中添加测试代码,如图下:

如何自定义Asp.Net服务器控件

6、运行测试,效果如下:

如何自定义Asp.Net服务器控件

7、查看网页源码,如下:

如何自定义Asp.Net服务器控件

1、自定义Asp.Net服务器控件,就是自定义一个WebControl的子类。

2、标签名通过构造函数设置 public MyWebControl(): base("a");

标签的属性通过Attributes设置Attributes["href"] = Href;

标签的内容通过重写RenderContents函数实现,同时要为自定义服务器控件添加特性[ParseChildren(false)]。

3、当你阅读一个Asp.Net的框架时,可以考虑从继承于WebControl的类开始,因为这样更直观。

4、Asp.Net控件的属性应当保存在ViewState中,这样可以在服务端快速获取控件的属性。

5、还有一些特性,如ToolboxData、DefaultProperty等,用于设计时支持。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢