那些年,我了解了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新建项目时,还有很多项目类型没有去试,所以,此文以回忆那些年乱点的日子里。

posted @ 2012-03-05 14:45  静悦  阅读(848)  评论(0编辑  收藏  举报