zoukankan      html  css  js  c++  java
  • 【转】【Asp.Net】asp.net服务器控件创建

    VS新建一个Web服务控件工程,会默认生成以下代码:

    namespace WebControlLibrary
    {
        [DefaultProperty("Text")]
        [ToolboxData("<{0}:HelloWorld runat=server></{0}:HelloWorld>")]
        public class HelloWorld : WebControl
        {
            [Bindable(true)]
            [Category("Appearance")]
            [DefaultValue("")]
            [Localizable(true)]
            public string Text
            {
                get
                {
                    String s = (String)ViewState["Text"];
                    return ((s == null) ? "[" + this.ID + "]" : s);
                }
    
                set
                {
                    ViewState["Text"] = value;
                }
            }
    
            protected override void RenderContents(HtmlTextWriter output)
            {
                output.Write(Text);
            }
        }
    }

    刚开始接触ASP.NET控件和组件开发,第1个疑问就是DefaultProperty 、ToolBoxData分别是什么含义?

    [DefaultProperty("Text")]

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

    DefaultProperty是设置控件默认的属性的。

    ToolBoxData的意思是当你将这个控件从工具箱中拖放到WebForm中时在aspx文件的HTML代码中添加的对该控件的定义。

    这里面的{0}表示什么意思?

    控件的标记的前缀 就是你拖这个控件到页面上时候 他就自动添加<{0}:HelloWorld runat=server></{0}:HelloWorld>,这个{0}是你定义的。

    那究竟{0}如何定义呢?

    修改Visual Studio自动产生的代码,增加下面的一行

    [assembly: TagPrefix("WebControlLibrary", "aspNet")]

    namespace WebControlLibrary

    {

         //其他代码不变

    }

    重新生成控件项目。

    新建网站,把新生成的控件拖到新建的Web窗体上,切换到源视图状态,可以看到控件定义标记为:

    <aspNet:HelloWorld ID="HelloWorld1" runat="server" />

    其中的aspNet正是我们用[assembly: TagPrefix("WebControlLibrary", "aspNet")]定义的。

    同时,在使用页面上部可以看到如下的标记:

    <%@ Register assembly="WebControlLibrary" namespace="WebControlLibrary" tagprefix="aspNet" %>

    再查一下msdn,TagPrefixAttribute的基本使用:

    public TagPrefixAttribute( string namespaceName, string tagPrefix )

    当然,自定义ASP.NET服务器控件TagPrefix,也可以修改网站的Web.config文件:

    <configuration>
        <system.web>
          <pages>
            <controls>
              <add assembly="WebControlLibrary" namespace="WebControlLibrary" tagPrefix="AspNet"/>
            </controls>
          </pages>
        </system.web>
    </configuration>
    <!--也可以在使用的页面添加下面这句进行注册控件-->
    <%@ Register assembly="WebControlLibrary" namespace="WebControlLibrary" tagprefix="aspNet" %>

    这样,拖动控件到页面上时,控件的tagPrefix为AspNet:

    <AspNet:HelloWorld ID="HelloWorld1" runat="server" />

    原文地址:http://www.cnblogs.com/zhouhb/archive/2012/04/16/2452783.html

  • 相关阅读:
    7-6
    7-5
    7-3
    7-4
    ios中怎样在本类中调用drawRect方法
    ios中怎么样判断路径最后的后缀名称
    ios中怎么样转行大小写
    ios中怎么样自动剪切图片周围超出的部分
    ios中如何计算(页数,行数,等等的算法)
    IOS中 如何去除Tabview里面cell之间的下划线
  • 原文地址:https://www.cnblogs.com/mqxs/p/3682707.html
Copyright © 2011-2022 走看看