那些年,我了解了asp.net组件开发
自定义控件与用户控件不同,不是一个.ascx的文件,而是一个类,这个类继承自webControl类,编写完成后,生成一个.dll文件,可以在VS中添加到工具栏中,这样我们就可以拖动它到页面中,就像asp.net服务器控件一样的使用,下面是一个Demo:
1、添加一个项目,是一个asp.net服务器控件项目,它会自动生成一个类,并继承自webControl类,如图:
得到如下类:
namespace MyControl
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:MyControl runat=server></{0}:MyControl>")]
public class MyControl : 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;
}
}
public string Url
{
get
{
String s = (String)ViewState["Url"];
return s ?? "";
}
set
{
ViewState["Url"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
String CustomControl = "<img src='" + Url + "' alt='" + Text + "' />";
output.Write(CustomControl);
}
}
}
2、编写这个类,重要的是要重写RenderContents(HtmlTextWriter output),用于陈显在页面上的形态
3、编译后生成.dll文件,那么就可以添加到项目中了,如下图:
4、使用测试一下:
<%@ Register Assembly="MyControl" Namespace="MyControl" TagPrefix="define" %>
<define:MyControl runat="server" Text="MyPicture" Url="../images/3.gif"></define:MyControl>
5、效果
总结:
那些年学习asp.net,使用VS2008新建项目时,还有很多项目类型没有去试,所以,此文以回忆那些年乱点的日子里。