ASP.NET提供自定义控件的机制,本文记叙生成一个简单自定义控件的方法。
一般地,Web页面处理发生错误时,可以在页面上显示错误信息,也可以通过javascript的alert提示信息。在ASP.NET中实现alert的一种方法是定义自定义控件。 小鸡射手的PromptControl实现如下,实在算是最简单的自定义控件啦,:-)
[DefaultProperty("Message"), ToolboxData("<{0}:PromptControl runat=server>")]
[Designer(typeof(PromptControlDesigner))]
public class PromptControl : System.Web.UI.WebControls.WebControl
{
private string message;
[Bindable(true), Category("Appearance"), DefaultValue("")]
public string Message {
get { return message; }
set { message = value; }
}
protected override void Render(HtmlTextWriter output)
{
if(Message!=null && Message.Length>0) {
output.Write(" ");
}
}
}
public class PromptControlDesigner : ControlDesigner
{
public override string GetDesignTimeHtml() {
return "PromptControl";
}
}
生成控件后,可以将其加到工具箱中,自定义控件和任何其他控件一样可以Drag到设计窗口,并可以在属性窗口中编辑Message属性,当然在程序中设置Message也完全可以啦。对于较复杂的自定义控件,主要是增加PostBack事件的处理,包括:
GetPostBackClientEvent()生成client的postback的script
如以前的blog用户控件中定义事件描述定义事件
实现RaisePostBackEvent()方法。