利用ASP.NET服务器端自定义控件实现XML文件中还原表单

      最近在公司从事的一项web表单的还原,采用ASP.NET的服务器端自定义控件还原表单,其中涉及到的许多自定义控件的技术要点对于每一个自定义的服务器端控件具有普遍性,现将各个技术要点向各位简要介绍,源代码不能提供(涉及公司利益)。

使用ASP.NET服务器端自定义控件从XML文件中读入表单的信息(表单的各个控件),动态的生成各个控件。涉及几个技术点,

1、  XML文件

2、  复合控件

3、  控件数组

4、  编程方式控制控件的各种属性。

5、  呈现HTML方法

服务器端控件是一组逻辑,提供了一个独立于浏览器的用户接口组件,它包含方法和属性,当页面提交时,它在服务器中引发事件,服务器控件可以探测客户设备的类型,然后以所支持的标记语言呈现自己。它支持的标记语言包括HTMLXMLDHTML

²       读取XML,这个我就不说了

²       服务器控件的生命周期

²        复合控件:使用类的组合(在父控件中结合使用两个或者更多的控件),从而创建复合控件。这个新控件中使用的控件此时都是子控件,但生成的控件包含了所有子控件的功能,新控件呈现了一个用户接口,可以重用已有控件的功能,包括这些控件的属性和事件。父控件可以处理由子控件引发的事件。创建复合控件时需要考虑两件事。为了控件添加到控件集中去,必须重写受保护的CreateChildControls()方法,该方法从控件继承下来的。在该方法中使用Controls.Add()方法添加每个子控件到控件树中。

为了避免子控件与页面其他控件之间的命名冲突,就必须使用INamingContainer接口。如果控件有任何类型的数据绑定,或者它是模版控件,或者它需要向子控件发送事件,就需要使用这个接口。(注意:子控件为控件处理所有的呈现,因此不需要重写Render()方法)。

²        控件数组:由于在还原表单中,存在大量的同类型的控件,最直接的数据结构就是数组,可是.net framework不支持控件数组,通过查找资料,找到一种方法模拟控件数组:使用CollectionBase类,该类提供了一个抽象的强类型集合的基类.我们可以用它来实现我们的控件数组。控件数组中可以包含任意数量的控件。

²        呈现服务器控件:还原表单中有线条等表单元素没有对应的服务器标准控件,需要通过编程方式控制服务器端控件的呈现;这里使用的关键类是HtmlTextWritter:不仅可以编写HTML内容和文本,在把HTML内容呈现到请求客户端时,它还提供了格式化的能力,包括标记管理、为HTML内容添加样式等。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统支持无限级分类、采集、生成静态HTML、ajax 自定义表单 系统标签说明: 的标签结构形如(ror标签): #{…/} 或 #{…}***{/} 内嵌标签: 标签: ##.../# 如同#{…/} 在#{…/}使用 字段值:[$$$/] 其 … 是标签参数 ***是循环调用的模块 $$$是字段名 具体标签及说明如下: 1、#{host fieldname=hostname/} 说明: 系统参数: 网站名称: fieldname=hostname 关键字: fieldname=hostkey 虚拟目录: fieldname=hosturl 2、#{param=classname/} 说明: 访问页面的各种通用参数: 栏目名称: param=classname 文档名称: param=title URL参数: param=*** 特别说明: 当栏目类型为单页面时,调用单页面内容使用param=content 3、#{ position /} 说明:当前位置 4、#{ menu /} Top: 显示数量,默认为10 Menutype: 菜单属性,默认顶级栏目菜单 Top:顶级栏目菜单 Self:同级栏目菜单 Sun:下级栏目菜单 Typelink: 相应栏目的链接地址 5、#{clalist …/} 或 #{clalist …}***{/} 说明:部分栏目文档列表(没有分页) Top: 读取的文档数目,默认10 Titlelen: 标题显示长度,默认30 Showtitle: 鼠标悬停时是否显示完整标题,默认不显示 Orderby: 排序字段,默认id(当order为rnd时可以不设置) Order: 顺序,默认降序(升序:asc 降序:desc 随机:rnd ) Classid: 所属栏目(0和all都表示所有栏目) all:按栏目显示相应数目的文档 0: 不按栏目显示相应数目的文档 clacol: 循环块列数 artcol: 文档列表列数 clastyle: 每个循环块的样式 artstyle: 每个循环块文档列表区域的样式 Maxlen: 各个字段的最大显示长度,默认100 Textlink: 形如:*** Typelink: 相应文档的链接地址(…) Imglink: 形如: Imgheight:图片高度 Imgwidth:图片宽度 Arttype: 文档属性 Image: 图片 Slide: 幻灯 Roll: 滚动 Common: 普通 Good: 推荐 #{clalist …/}:不用设置***,系统默认为textlink 嵌套标签:{class}…[classtext/] [classlink/]…{/class} 说明:classtext 栏目名 classlink 栏目链接 6、#{artlist …/} 或 #{artlist …}***{/} 说明:全部栏目文档列表(有分页)属性类似于clalist 没有Showclass及设置其属性的各种标签 Pagelist:分页列表 Search:搜索页使用标签,关键字自定义字段值,默认为key 7、#{art_view}***{/} 说明:文档显示页标签 可以显示文档的各个字段值,如:title,hits,content,ctime等 #{Prenext/}:显示上一篇、下一篇 8、#{pl }***{/} 9、#{book }***{/} 更多、更详细的标签自己在使用来发现哦!~~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值