ViewState其实和Session.Application是一样的.
只是作用域不一样.
session是会话级的.application是应用程序级的.而viewstate则是页面级的.
也就是说出了这个页面.该viewstate不能再被访问.可以保存任何对象.
如:
page_load中:if(!IsPostBack)ViewState["test"]=0;
在页面的某个button事件中:int test=Convert.ToInt32(ViewState["test"].ToString());
这时可以直接从viewstate中拿出值来.
ViewState 指的是当前页面的视图状态(不同于控件的视图状态),
ViewState 可以将任意支持序列化的对象保存到页面中,
它与 Session 的重要区别有两个:
第一、ViewState 保存的对象不能跨页使用,仅限当前页面使用。Session 对象则可以所有页面共享使用。
Session["Count"] = 13;
变量 Count 可供所有页面使用(只要存在),Count 变量的生命周期由初始化到会话结束,
ViewState["Count"] = 13;
变量 Count 仅能在当前页面使用,生命周期是请求当前页面开始,到当前页面完成生成HTML最终呈现到客户端浏览器的文件结束。
对象被序列化后“依附”在页面上,
呈现为页面时使用 <input type="hidden" value="信息被记录在此处"> 标记记录相关信息。
每一次回调(CallBack),ASP.NET将从当前页面中提取“依附”在页面上“寄存”的信息以还原该视图状态的对象。
例如:
Page_Load()
{
if (! IsPostBack)
{
ViewState["Count"] = 0; //初始化 Count 变量
}
}
经过初始化后,可在当前页面任意地方使用该变量(即使是回调时执行的代码)。
第二、Session 的变量存储在服务器上,ViewState 存储在当前页面中。
session 占用服务器资源 viewstate则不占用。
session不加重html负载,viewstate则相反
session 对整个 application 有效 ,而 viewstate相当于某个页面的 session
定义 viewstate
// 保存viewstate
ViewState["SortOrder"] = "DESC";
// 读取viewstate
string sortOrder = (string)ViewState["SortOrder"];
ViewState与Session
最新推荐文章于 2018-05-06 19:06:00 发布