利用ASP.NET服务器自定义控件还原表单是企业中常见的应用。在此过程中,涉及到许多ASP.NET服务器自定义控件的技术要点,对于每一个自定义的ASP.NET服务器控件具有普遍性。现以一个利用ASP.NET服务器自定义控件实现XML文件中还原表单的实例,将ASP.NET服务器自定义控件的各个技术要点向各位简要介绍。限于一些机密问题,源代码恕不能提供。
使用ASP.NET服务器自定义控件从XML文件中读入表单的信息(表单的各个控件),动态的生成各个控件,涉及几个技术点:
1、 读XML文件
2、 复合控件
3、 控件数组
4、 编程方式控制ASP.NET服务器自定义控件的各种属性。
5、 呈现HTML方法
ASP.NET服务器控件是一组逻辑,提供了一个独立于浏览器的用户接口组件,它包含方法和属性,当页面提交时,它在服务器中引发事件,ASP.NET服务器自定义控件可以探测客户设备的类型,然后以所支持的标记语言呈现自己。它支持的标记语言包括HTML、XML和DHTML。
◆读取XML,这个我就不说了
◆ASP.NET服务器自定义控件的生命周期:
◆复合ASP.NET服务器控件:使用类的组合(在父控件中结合使用两个或者更多的控件),从而创建复合控件。这个新控件中使用的控件此时都是子控件,但生成的控件包含了所有子控件的功能,新控件呈现了一个用户接口,可以重用已有控件的功能,包括这些ASP.NET服务器控件的属性和事件。父控件可以处理由子控件引发的事件。创建复合控件时需要考虑两件事。为了控件添加到ASP.NET服务器控件集中去,必须重写受保护的CreateChildControls()方法,该方法从控件继承下来的。在该方法中使用Controls.Add()方法添加每个子控件到控件树中。
为了避免子控件与页面其他控件之间的命名冲突,就必须使用INamingContainer接口。如果控件有任何类型的数据绑定,或者它是模版控件,或者它需要向子控件发送事件,就需要使用这个接口。(注意:子控件为控件处理所有的呈现,因此不需要重写Render()方法)。
◆控件数组:由于在还原表单中,存在大量的同类型的控件,最直接的数据结构就是数组,可是.net framework不支持控件数组,通过查找资料,找到一种方法模拟控件数组:使用CollectionBase类,该类提供了一个抽象的强类型集合的基类.我们可以用它来实现我们的控件数组。控件数组中可以包含任意数量的控件。
◆呈现ASP.NET服务器控件:还原表单中有线条等表单元素没有对应的服务器标准控件,需要通过编程方式控制ASP.NET服务器自定义控件的呈现;这里使用的关键类是HtmlTextWritter:不仅可以编写HTML内容和文本,在把HTML内容呈现到请求客户端时,它还提供了格式化的能力,包括标记管理、为HTML内容添加样式等。
【编辑推荐】