** 创建 ASP.NET WEB ** ** 自定义控件——例程 1 **
** 作者:大毛 http://damao.0538.org **
WEB 自定义控件编程是 ASP.NET 编程里面比较难的一部分,尤其是复杂的控件需要用到平常不常用的一些技术技巧。
下面根据一些我自己的实践经验,向读者介绍一下这方面的技术。
简单的继承控件: ConfirmButton
我们在用 ASP.NET 编写应用程序的时候,经常需要在按钮提交的时候弹出一个 [OK][Cancel] 的确认框,以防止用户在操作的时候误提交。实现这个功能传统的方法是在代码页的 Page_Load 事件里添加按钮的 Attributes ,但是每个按钮都要添加一遍比较麻烦。下面我们来自己制作一个有这样功能的按钮解决这个问题。
(例程采用 C# 语言)
1 .新建项目
首先打开 Visual Studio.net ,建立一个新的 Web 控件库项目,取名 TestLib 。在解决方案资源管理器里会有一个标识为 WebCustomControl1.cs 的源代码文件,将其改名为 ConfirmButton.cs 。
2 .编辑代码
打开 ConfirmButton.cs 源文件,将类名“ WebCustomControl1 ”改为“ ConfirmButton ”;将类继承自“ System.Web.UI.WebControls.WebControl ”改为“ System.Web.UI.WebControls.Button ”;
将代码“ [DefaultProperty("Text"),
ToolboxData("<{0}:WebCustomControl1 runat=server>
")] ”
改为“ [DefaultProperty("Text"),
ToolboxData("<{0}:ConfirmButton runat=server>
")] ”,这样使得 aspx 页面显示的该控件 xml 代码标识显示“
1<cc1: confirmbutton="" …=""> … </cc1:>
”。
下面进一步修改代码,删除原有代码:
private string text;
[Bindable( true ),
Category("Appearance"),
DefaultValue("")]
public string Text
{
get
{
return text;
}
set
{
text = value ;
}
}
添加新代码(用于设置在弹出的确认框中显示的信息):
private string _confirmMessage = "Is OK?";
[Bindable( true ),
Category("Appearance"),
DefaultValue("Is OK?")]
public string ConfirmMessage
{
get
{
return _confirmMessage;
}
set
{
_confirmMessage = value ;
}
}
最后将
protected override void Render(HtmlTextWriter output)
{
output.Write(Text);
}
改为 protected override void Render(HtmlTextWriter output)
{
base .Attributes.Add("OnClick","return confirm('"+ this ._confirmMessage+"');");
base .Render(output);
}
3 .添加在工具箱中显示的图标
选择菜单 [ 项目 ]/[ 添加新项 ] ,在弹出的对话框中选择创建“位图文件”并将文件名改为“ ConfirmButton ”( 很重要 ,位图文件名必需和类名一致)。然后在“解决方案资源管理器”中选中该位图文件,并在属性设置框中将“生成操作”的值设置为“嵌入的资源”。
好了,编译一下吧,一切 OK 了。剩下的事,就是把编译好的 dll 文件找到并添加到工具箱中,在以后的 WEB 应用程序中就可以用了。