在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?
方法 | 信息量大小 | 保存时间 | 应用范围 | 保存位置 |
Application | 任意大小 | 整个应用程序的生命期 | 所有用户 | 服务器端 |
Session | 小量,简单的数据 | 用户活动时间+一段延迟时间(一般 为20分钟) |
单个用户 | 服务器端 |
Cookie | 小量,简单的数据 | 可以根据需要设定 | 单个用户 | 客户端 |
Viewstate | 小量,简单的数据 | 一个Web页面的生命期 | 单个用户 | 客户端 |
Cache | 任意大小 | 可以根据需要设定 | 所有用户 | 服务器端 |
隐藏域 | 小量,简单的数据 | 一个Web页面的生命期 | 单个用户 | 客户端 |
查询字符串 | 小量,简单的数据 | 直到下次页面跳转请求 | 单个用户 | 客户端 |
Web.Config文件 | 不变或极少改变的小量数据 | 直到配置文件被更新 | 单个用户 | 服务器端 |
ViewState视图状态
ViewState用来保存用户的状态信息,有效期等于页面的生命周期。
可以保存大量数据但是要慎用,因为会影响程序性能。所有的Web服务器控件都是用ViewState在页面PostBack期间保存状态,不需要则关闭 @page 里面设置EnableViewState=false。
在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了所有控件在ViewState中的状态值。
<input type="hidden" name="__VIEWSTATE" value="">
ViewState是一个名称/值的对象集合。当请求某个页面时,ASP.NET会把所有控件的状态序列化成一个字符串,每次页面提交时一起提交到后台,asp.net对其中的值进行解码,然后输出时再根据这个值来恢复各个控件的状态.
ViewState["ID"] = "yiner"; String ID = ViewState["ID"].ToString();