(1)Asp.Net Server Control 编写
2009-12-09 11:55 Mr.Longer 阅读(256) 评论(0) 编辑 收藏 举报对于编写Asp.Net的服务器端控件,首先要做的,就是要知道什么服务器端控件,为什么要编写服务端控件?
我个人简单认为,服务端控件能够跟服务端进行交互,能够在IIS上Run起来的控件,最终要是要被IIS解析成HTML代码,被浏览器认识。编写服务端控件,不仅提高开发效率,而且还能实现比html普通的控件更为丰富,跟服务器产生交互的功能。虽然只说了这么点优点,是否现在开始有点想认识它了呢?
首先,要想编写一个服务端控件,就必须弄明白成为一个服务端控件的必须具备的Code,了解它们的继承关系。
先看看System.Web.UI命名空间
1.Control 类,所有的控件都共享的一个类,你需要去看下其里面受保护的几个方法和属性,虽然一下看不完,以后会发现常常用到这些方法。可以试着去看看它的派生类哦!
2.HtmlTextWriter 类
不得不了解的一个类,主要工作就是我们写的标记字符和文本输出。
要想自己编写的服务器控件,能够有那么一点特别。
1. 必须继承Control类
2. 重写Control类的Render方法,这个是必须的,因为其他控件都继承了Control 类,所以几乎所有控件都有这个方法
除了上面的两个初步了解,还要知道一些小小的标记。
[CategoryAttribute("Appearance")]
要使用元数据,必须引用System.ComponentModel命名控件,一般你如果写组件的话,不可能不用到这样类库。具体的MSDN上有所介绍。这个命名空间,很值得去看看,因为里面包含了许多标记。
了解了这三步,基本就知道了它的名字了,现在开始让我们知道它的魅力吧!
怎么利用VS2005创建一个呢?如图: 选择Web控件库,创建一个,就可以了
2.然后有个默认的cs代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebControlLibrary1
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
public class WebCustomControl1 : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Text"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
}
}
说明: Text属性,是此控件默认的,例如:引用的时候,先在aspx页面上注册了后,<?:WebCustomControl1 runat="server" Text="???"></?:WebCustomControl1>,就是这么回事。
然后为什么要重写一个RenderContents方法呢,我想这个,不用说,你也明白,实在不知道,就再继续回去学学OO的初步理论吧!
目的: 要实现自己的html输出,就可以在RenderContents上做手脚,开始编写点Code吧,然后在页面跑跑试试就明白了。