ASP.NET 2.0 版保留了 ASP.NET 1.1 版的许多功能,包括使用视图状态的自动页面状态持久性和对会话和应用程序状态的数据库支持。另外,ASP.NET 2.0 添加了两个新功能:视图状态分块和控件状态。
控件状态
配置文件属性
很多时候您需要存储特定于用户的数据,以便对用户使用应用程序时的用户体验进行自定义。有两种主要的方法可以在 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 应用程序中的存储方式。例如,如果出现以下原因,就可以考虑创建一个自定义提供程序:
有关更多信息,请参见实现会话状态存储提供程序。
HiddenField 控件
视图状态提供了在网页上存储数据的编程能力,它自动检索、保持和维护页上的隐藏形式字段中的数据。但是,ASP.NET 2.0 添加了一个新的 Web 控件,HiddenField 控件呈现为 input type="hidden"/ 元素,但提供了一个与其他 Web 控件一致的 API。
请参见