asp.net如何开发第三方控件

开发一个可以在web端读取dxf文件的控件,可以通过拖拽放到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正是我们用[assembly: TagPrefix("WebControlLibrary", "aspNet")]定义的。

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

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

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

public TagPrefixAttribute(
string namespaceName,
string tagPrefix
)

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






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