北大青鸟ASP.NET的视频,向我们介绍了用户控件和自定义控件。
先简单说一下这两者的明显的区别。
- 用户控件的扩展名为.aspx;自定义控件的扩展名为.dll。
- 用户控件使用时,需要把该文件放到应用程序的目录下;自定义控件使用时,则可以把它添加到工具箱。
这里,我主要介绍怎么创建Web自定义控件。
在VS2010中,已经没有Web控件库了,那怎么办哩?
看看自定义控件的类型.dll,你有没有想到什么呢?还记不记得我们的DAL.dll,BLL.dll……,那么从本质上说,它们是一样的东西。
所以,第一步,我们首先建立一个类库。
图中标注“注意”处:这个类库的.NET Framework版本要和你的Web应用程序的.NET Framework版本一致,否则之后在工具箱中添加该自定义控件时,控件显示为灰色,不可用。
第二步,添加一个类。
第三步,添加引用——System.Web
第四步,在类中引入命名空间:System.Web 和System.Web.UI
第五步,给这个自定义控件添加属性,以下代码,是给该控件添加一个Text属性。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI ;//HtmlTextWriter 在此命名空间下
using System.ComponentModel;
namespace ClassLibrary1
{
/// <summary>
/// WebCustomControl1的摘要说明
/// </summary>
[DefaultProperty ("Text"),ToolboxData ("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
public class WebCustomControl1:System .Web .UI .WebControls .WebControl
{
private string text;
/// <summary>
/// Text属性
/// </summary>
public string Text
{
get { return text; }
set { text = value; }
}
/// <summary>
/// 将此控件呈现出给定的HTML编写器
/// </summary>
/// <param name="output">要写出的HTML编写器</param>
protected override void Render(HtmlTextWriter output)
{
this.Text = "<font size=18px><b>你好</b></font>";
output.Write(Text);
}
}
}
第六步,生成类库。
第七步,新建一个ASP.NET程序,新建一个Web窗体,在工具箱的空白处右击——选择项——浏览——找到刚才你创建的那个类库文件夹下的Debug文件下的Bin文件夹(如:ClassLibrary1\Debug\Bin\ClassLibrary1.dll)
找到该文件后,在它前面打勾,确定。如图:
这个时候在工具箱中应该能看到它,如果看不到,请在空白处右击——显示全部。
然后把控件直接拖到设计窗口,如图:
看来,自己制作控件也是很简单的啊!