ASP.NET服务器控件视图浅析
创始人
2024-04-27 06:11:31
0

ASP.NET服务器控件视图的必要性:如果我们的服务器控件需要较完备的GUI,譬如需要控制HTML元素的附加属性字体、颜色、高度等,那么应当从Control的子类WebControl继承,以得到所需的基础性能。从WebControl类派生,需要遵守通常如下的约定:

1、 包含从System.Web.UI.WebControl的命名空间的引用

2、 不能够重载Render方法直接向输出流提供数据,而应当重载RenderContents方法来实现

3、 通常情况下,WebControl的派生类最终在输出流中表现为标签,但是如果自己希望使用其它的标签,就应当重载WebControl的tagKey属性或者TagName属性。

ASP.NET服务器控件视图学习的经验(或者说MS建议):

1、如果控件生成非可视化元素或显示给非HTML客户端,那么应当选用Control作为符类继承。如等标签

2、提供HTML界面的从WebControl继承

3、扩展修改功能时应当从一个已存控件派生,但是不要从System.Web.UI.HtmlControls命名空间派生,因为vs.net设计器不承认从该类派生的控件

为了能够支持设计器,实现设计期,那么需要考虑attribute(元数据)的编程。

ASP.NET服务器控件视图之视图状态

Web编程很重要的一个方面是状态管理,也就是解决在无状态的http协议基础上的状态管理问题。在asp类web编程技术时代,这通常通过以下技术手段来解决:

1、 Session

2、 Cookies

3、 隐藏变量

4、 URL携参

然而,以上方案都有自身的缺陷,譬如Session不宜扩展,Cookies在特定情况下可能不可用,隐藏变量不易管理,URL携参有长度限制且容量有限。。。

综合考虑,MS提出了基于隐藏变量方案的ViewState(视图)的概念,通过视图保存2个ASP.NET页间的服务器端控件状态。视图是如何工作的呢?

在处理一个Web请求后,页面框架会收集页面控件树中所有控件的状态并且创建一个视图对象。每一个Control都有一个ViewState字典保存自己的状态,当输出html到客户时将全部ViewState进行串行化为一个字符串表达式,作为隐含变量发送到客户端,通常情况下我们将视图的串行化子符串在服务器同客户端间进行传递,上一个请求的隐含变量会回传到服务器端进行并行化,然后“还原”给服务器控件。本质上,是一个隐含变量,但是在隐含变量基础上加入了ASP.NET的管理功能,这就是视图的本质。

Control的EnableViewState决定了控件是否同意将自己的状态交给自动化的视图管理。

当一个控件需要保存状态时候,没人可以支持保存的属性为int32 boolean 等“简单原生”数据类型。如果是较为复杂的属性值类型,需要编程者提供类型转换器,将值数据转换为字符串,若未提供,那么采用代价高昂的二进制串行化功能(逐个byte的进行)。视图数据在传递过程中通过传递一个附加的摘要来确保数据不被篡改(但无法保证不被窥探,毕竟base64编码近乎明文)。

ASP.NET服务器控件视图方面的内容就简单的向你介绍到这里,希望对你学习ASP.NET服务器控件视图方面有所帮助。

【编辑推荐】

  1. ASP.NET组件设计浅谈
  2. ASP.NET组件设计之ASP.NET Timer浅析
  3. ASP.NET组件设计学习之创建工程库
  4. ASP.NET组件设计学习之ASP.NET服务器控件
  5. ASP.NET自定义控件入门浅析

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...