请单击以进行评分并提供反馈
MSDN
MSDN Library
网页
 ASP.NET 状态管理的新增功能
此页面仅适用于
Microsoft Visual Studio 2005/.NET Framework 2.0

同时提供下列产品的其他版本:
ASP.NET
ASP.NET 状态管理的新增功能

ASP.NET 2.0 版保留了 ASP.NET 1.1 版的许多功能,包括使用视图状态的自动页面状态持久性和对会话和应用程序状态的数据库支持。另外,ASP.NET 2.0 添加了两个新功能:视图状态分块和控件状态。

控件状态

为了让控件正常工作,有时需要存储控件状态数据。例如,如果编写了一个自定义控件,其中具有显示不同信息的不同选项卡,为使该控件如预期一样工作,控件需要知道在往返过程中选择的是哪个选项卡。ViewState 属性可用于此目的,但开发人员可能在页级别关闭了视图状态,从而有效地中断控件。为解决此问题,ASP.NET 页框架在 ASP.NET 2.0 版中公开了一种称为控件状态的新功能。

ControlState 属性允许保持特定于控件的属性信息,不像 ViewState 属性一样可以关闭。若要使用控件状态,控件必须在初始化过程中调用 RegisterRequiresControlState 方法,然后重写 SaveControlStateLoadControlState 方法。

配置文件属性

很多时候您需要存储特定于用户的数据,以便对用户使用应用程序时的用户体验进行自定义。有两种主要的方法可以在 ASP.NET 1.1 中实现这一点。会话状态提供了一种简单的存储特定于用户的信息的方法。但是,当用户会话过期时,会话状态会从内存中移除。还可以使用 Cookie 来存储唯一用户标识符,然后保持和检索数据库中的信息。但是,这需要自定义代码。为解决此问题,ASP.NET 2.0 提供了一种称为配置文件属性的新功能,它允许存储特定于用户的数据。

配置文件属性功能与会话状态类似,区别在于用户会话过期时配置文件数据不会丢失。相反,配置文件属性功能使用以持久性格式存储且与单个用户关联的 ASP.NET 配置文件。ASP.NET 配置文件允许您在无需创建和维护自己的数据库的情况下管理用户信息。此外,配置文件使用了一个强类型 API,您可以在应用程序中的任何位置访问该 API,从而使用用户信息。您可以在配置文件中存储任何类型的对象。ASP.NET 配置文件功能提供了一个通用存储系统,使您能够定义和维护几乎任何类型的数据,同时仍可用类型安全的方式使用数据。

有关更多信息,请参见 ASP.NET 配置文件属性概述

视图状态分块

视图状态提供了一种简单的方法来自动保持页上的字段和控件数据,而不需要在往返服务器期间手动请求并重新填充。它还允许在 ViewState 属性中存储页上的自定义数据。

但是,在某些情况下,视图状态数据会变得很大。因为视图数据存储在隐藏的字段中,某些代理或防火墙会阻止对包含这些数据的页的访问。因此,ASP.NET 2.0 页框架引入了一种名为视图状态分块的功能。如果视图状态的数据量变得太大,视图状态分块自动将数据分成多个块区,并将这些数据放在多个隐藏形式的字段中。

若要启用视图状态分块,请将 MaxPageStateFieldLength 属性设置为在单个视图状态字段中允许的最大大小(以字节为单位)。当该页回发到服务器时,该页会在页初始化阶段分析视图状态字符串,并还原页中的属性信息。默认设置是 -1,这表示不存在最大大小,不会将视图状态分成多个块区。

有关更多信息,请参见视图状态概述

自定义会话状态管理

默认情况下,会话状态的值和信息存储在内存的 ASP.NET 进程中。ASP.NET 还提供会话状态提供程序,它允许您使用可在单独的进程中保留会话数据的会话状态服务器,或者您可以将会话状态数据保持在 SQL 数据库中。但是,对于 ASP.NET 2.0,您可以创建自定义会话状态提供程序,它允许您自定义会话状态数据在 ASP.NET 应用程序中的存储方式。例如,如果出现以下原因,就可以考虑创建一个自定义提供程序:

  • 您需要在 SQL Server 外的其他数据源(如 Visual FoxPro 数据库或 Oracle 数据库)中存储会话状态信息。

  • 需要使用不同于 .NET Framework 附带的提供程序所使用的数据库架构来管理会话状态信息。一个示例就是使用预定义架构存储在某个公司或网站的现有 SQL Server 数据库中的购物车数据。

有关更多信息,请参见实现会话状态存储提供程序

HiddenField 控件

视图状态提供了在网页上存储数据的编程能力,它自动检索、保持和维护页上的隐藏形式字段中的数据。但是,ASP.NET 2.0 添加了一个新的 Web 控件,HiddenField 控件呈现为 input type="hidden"/ 元素,但提供了一个与其他 Web 控件一致的 API。

请参见

社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利 | 商标 | 隐私权声明
Page view tracker