|
状态时某一类型的数据在一定时期内保持活跃的信息。这里说的一定时期可以使整个应用程序的生命周期,可以使用户操作程序的时间,当然也可以是单个页面的生命周期等。
为了解决传统Web编程中固有的限制,ASP.NET提供了按页面保留数据和在整个应用程序范围内保留数据的功能,这些具体功能如下:(其中1到5是以不同方式将数据存储到客户端上,6到8是将数据存储到服务器上的内存中)
一、视图状态
ViewState属性提供一个字典对象,用于在对同一页的多个请求之间保留值。它是页用来在往返行程之间保留页和控件属性值的默认方法。
当将页面回发至服务器时,页面会在页的初始化阶段分析视图状态字符串,和原页中的属性信息。也可以使用视图状态来存储值。
视图状态提供了特定ASP.NET页的状态信息。如果需要在多个页上使用信息,或者如果需要在访问网站时保留信息,则应当使用另一个方法(如应用程序状态、会话状态或个性化设置)来维护状态。
注意:视图状态信息将序列化为XML,然后使用Base64编码进行编码,这将生成大量的数据。将页回发到服务器时,视图状态的内容将作为页面回发信息的一部分发送。如果视图状态包含大量信息,则会影响页的性能。
在某些情况下(如数据驱动页在每次回发时从数据存储区进行刷新),应当关闭视图状态以移除由数据控件(如GridView控件)生成的大量隐藏字段。
换句话说,我们要尽量避免在前台使用视图状态,如果可能的话,可以用input的控件,这样可以提高网站的性能。
存储在视图状态中的数据类型如下:字符串、整数、布尔值、Array对象、Arraylist对象、哈希表、自定义类型转换器。
使用视图状态具有以下3个优点:
一、耗费的服务器资源较少(与Application、Session相比):因为,视图状态数据都写入了客户端计算机中。
二、易于维护:在默认情况下.NET系统自动启用对控件状态数据的维护。
三、增强的安全功能:视图状态中的值经过哈希计算和压缩,并且针对Unicode实现进行编码,其安全性要高于使用隐藏域。
使用视图状态具有以下3个缺点:
一、性能注意事项:如果存储较大的值,用户显示页和发送页时的速度减慢。
二、设备限制:移动设备可能没有足够的内存容量来存储大量的视图状态数据。
三、潜在的安全风险:视图状态存储在页上的一个或多个隐藏域中。虽然视图状态以哈希表格式存储数据,但它可以被篡改。
加密视图状态:在@ Page指令中,将ViewStateEncryptionMode属性设置为
<% @Page ViewStateEncryptionMode="Always"... %>
NET技术:ASP.NET的状态管理,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。