asp.net 控件的显示自然会离不开输出HTML、CSS 、Javascript等前台的显
示内容,所以开发一个控件的时候第一件事就是要知道如何输出客户端要显示的
内容。
一、选择基类
asp.net 中所有的标准控件都可以拿过来作为基类,如果我们要开发的控件
只是对原有的标准控件做一些功能上的加强的话(如:你对TreeView的CheckBox
添加一些随动的功能),就可以直接拿标准控件过来作为基类。
一般的如果开发的控件从标准里面找不到合适的,可以从三个类中来继承:
System.Web.UI.Control System.Web.UI.WebControls.WebControl System.Web.UI.WebControls.CompositeControl
下面介绍下这三个类的关系跟区别:
Control :只提供简单的呈现,没有对css 的支持。如:Literal 控件WebControl
:建立了对控件外观的支持。适合可视化的控件来继承,如:Button CompositeControl
:是派生多个控件复合的。适合开发应用asp.net 中的标准控件。
三者的关系:Control 是asp.net 所有控件的基类,WebControl是从Control
中继承而来,CompositeControl是从WebControl中继承而来。
二、如何呈现
Control 的呈现
Control 类中的呈现是通过方法Render来实现的。Render的原型:
protected internal virtual void Render(HtmlTextWriter writer ){
……}
HtmlTextWriter writer 参数是在运行时有调用Render方法的框架所提供,
所以我们可以同过重写Render方法来实现内容的呈现。
HelloWorld示例:
public class HelloWorld : Control{
protected override void Render(HtmlTextWriter writer)
{
writer.WriteLine("Henllo World");
}
}
编译之后,在新的项目中添加对dll文件的使用,会呈现出"Hello World"。
Control 输出html内容
在Render方法中我们要实现输出html标签跟样式可以借助于:HtmlTextWriterTag、
HtmlTextWriterAttribute 、HtmlTextWriterStyle 这三个枚举来实现。HtmlTextWriterTag
是表示Html标签,HtmlTextWriterAttribute 是表示标签上的属性,HtmlTextWriterStyle
是表示样式。