viewstate 与 session 区别

时间:2022-12-21 22:45:03

Session存在于服务器端可以跨页面.耗费服务器资源.
ViewState载体是页面文件,消耗带宽.

EG:

viewstate是存储在客户端的隐藏信息,当服务器接受请求回传时可以将viewstate内容回传到页面中,,其机制可自动实现,控件的属性中都有viewstate,只需将其设置为true即可,就可以保存控件信息.
session是客户端会话,具体应用举例:比如你进入淘宝网,购物,当你选中欲购买的产品时,你点下一页按钮进入另外另一个页,那么如何存储这些表格信息呢,就可以用到session(tableid)了,这样session就可以存储你前一页选的产品表格了,然后这一页又选了哪些产品,你可以把这些新的记录集再加入老的表格中,最后产生新表,并存储在session中,Session变量又可被下一页面调用.
最后在用户购买单中就可以调用最终session,产生表格,提交购物。

当aspx页面重新加载后,上一次的存放在变量中的数据就会丢失的。
用ViewState来保存
如ViewState["aaa"]="要保存的值";
下次读取的时候可以先用if(ViewState["aaa"]==null)来判断一下是否有值
ViewState["aaa"]获得是object类型的,用的时候转一下先

Session是服务器的内存中,最大10KB,默认20分钟释放。
ViewState只能在一个页面上传值,session可跨多个页面传值
ViewState只是在当前page内有效,关了当前页,再重新打开,ViewState就没了的。

为了在 HTTP 请求间保留这些值,ASP.NET 服务器控件使用该属性(它是 StateBag 类的实例)来存储属性值。在处理后续请求时,该值随即作为变量传递给 HTML 隐藏输入元素。