asp.net控件开发(一) -- 显示控件内容

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是表示样式。

Picture示例:

public class PicShow : Control
{
    protected override void Render(HtmlTextWriter writer)
    {
    writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "center"

时间: 2024-09-08 04:58:04

asp.net控件开发(一) -- 显示控件内容的相关文章

c#-界面不显示控件,不显示控件

问题描述 界面不显示控件,不显示控件 如图所示, 解决方案 重启计算机看看,如果你没有添加特殊的代码,可能是你的gfi资源饱和造成的,检查下计算机上有没有不良的软件.尽量关闭.另外禁用aero glass看看. 解决方案二: 是你背景透明化全部透明了?具体代码呢 解决方案三: 是背景被你全给透明了吧.

asp.net控件开发(三) 处理标签间内容

asp.net控件标签间的内容有的时候处理成节点有的时候处理成子控件.如:间的节点就会处理成属性Text的值,而如Panel这样的控件则就是将其处理成子控件.首先看如何处理成属性的. 一.处理成为属性 对于控件标签间的内容我们可以通过类System.Web.UI.ParseChildrenAttribute类控制控件对其内容的解析行为. ParseChildrenAttribute是一个类级别的属性标识,有四个构造函数: 1.ParseChildrenAttribute(),ChildrenAs

WinForm控件开发总结(四) 控件属性的串行化

前一篇文章介绍了常用的设计时Attribute.其中BrowsableAttribute,CategoryAttribute, DescriptionAttribute,DefaultPropertyAttribute,DefaultEventAttribute都是比较简单的,也是可 有可无,但是为了提供更好的用户体验这些Attribute最好不要省掉,如果你对这些Attribute还不熟悉, 可以参考我前一篇文章的描述或者查看MSDN,这里我就不在赘述了. 下来我们主要介绍一下Designer

ASP.NET2.0 WebRource,开发微调按钮控件

asp.net|web|按钮|控件 现在.有许多开发人员已经在使用ASP.NET2.0的WebResource的功能了.WebResource允许我们嵌入资源到程序集中.包括图像,文本等. 在介绍WebResource就不得不介绍一下WebResource.axd,我们来看一下 script language="javascript"     src="WebResource.axd?a=s&r=WebUIValidation.js&t=63194436284

ASP.NET2.0 WebRource,开发微调按钮控件_实用技巧

现在.有许多开发人员已经在使用ASP.NET2.0的WebResource的功能了.WebResource允许我们嵌入资源到程序集中.包括图像,文本等. 在介绍WebResource就不得不介绍一下WebResource.axd,我们来看一下 script language="javascript"     src="WebResource.axd?a=s&r=WebUIValidation.js&t=631944362841472848"    

WinForm控件开发总结(六) 控件属性类型转换器代码详解

在上一篇文章,我为控件添加一个一个复杂属性,并且为这个属性的类型的编写了一个类型转换器, 现在我们来看看这个类型转换器的代码,并解释一下这些代码的意义. 要实现一个类型转换器,我们必须要重写(override)四个方法: CanConvertFrom()――根据类型参数进行测试,判断是否能从这个类型转换成当前类型,在本例中我 们只提供转换string和InstanceDescriptor类型的能力. CanConvertTo()――根据类型参数进行测试,判断是否能从当前类型转换成指定的类型. C

艾伟:WinForm控件开发总结(六)-----控件属性类型转换器代码详解

      在上一篇文章,我为控件添加一个一个复杂属性,并且为这个属性的类型的编写了一个类型转换器,现在我们来看看这个类型转换器的代码,并解释一下这些代码的意义.       要实现一个类型转换器,我们必须要重写(override)四个方法:       CanConvertFrom()――根据类型参数进行测试,判断是否能从这个类型转换成当前类型,在本例中我们只提供转换string和InstanceDescriptor类型的能力.       CanConvertTo()――根据类型参数进行测试

WinForm控件开发总结(三) 认识WinForm控件常用的Attribute

在前面的文章里我们制作了一个非常简单的控件.现在我们回过头来看看这些代码透露出什么信息. 这个类是直接从Control类派生出来的,自定义控件都是直接从Control类派生出来的.这个类定义了 一个属性TextAlignment,用来控制文本在控件中显示的位置: [ Category("Alignment"), Description("Specifies the alignment of text.") ] public ContentAlignment Text

WinForm控件开发总结系列文章目录

WinForm控件开发总结(十二) 让控件处理导航键 WinForm控件开发总结(十一) 调试控件的设计时行为 WinForm控件开发总结(十) 为属性设置默认值 WinForm控件开发总结(九) 为属性提下拉式属性编辑器 WinForm控件开发总结(七) 为复杂属性的子属性提供编辑功能 WinForm控件开发总结(八) 为属性提供弹出式编辑对话框 WinForm控件开发总结(六) 控件属性类型转换器代码详解 WinForm控件开发总结(五) 为控件的复杂属性提供类型转换器 WinForm控件开