为什么ViewStates而不是Sessions

时间:2015-01-12 11:55:01

标签: asp.net

为什么我们使用ViewState来存储数据?即使我们有Session来做同样的工作吗?

Session["Data"]

VS

ViewState["Data"]     

有什么区别?

3 个答案:

答案 0 :(得分:1)

ViewState适用于您当前所在的页面,并作为隐藏字段__ViewState存储在客户端计算机上,并使用Base64进行加密

当Session存储在服务器上并且在整个用户会话的范围内时,当用户离开您的站点并且会话到期时(默认情况下20分钟不活动)或者您明确调用Session.Abandon()时,它将被删除例如注销

使用不包含大对象的会话时必须小心,因为当有更多活动会话时,备忘录将被填满。

使用ViewState的大对象时要小心,因为它存储在客户端上并且使用回发来回。

答案 1 :(得分:1)

**Session**



Session state is maintained in session level.

  Session state value is available in all pages within a user session.
    - 
  Session state information stored in server.
    - 
  Session state persist the data of particular user in the server.
    This data available till user close the browser or session time
    Completes.
    -
 Session state used to persist the user-specific data on the server
    Side

查看状态

    View state is maintained in page level only. 
    View state of one page is not visible in another page.        
    View state information stored in client only.       
    View state persist the values of particular page in the client
  (browser) when post back     operation done.

答案 2 :(得分:0)

Session数据仅在当前会话处于活动状态时有效。通常,服务器会在半小时左右后删除会话。即使会话过期且您仍然在屏幕上显示该页面,ViewState也可用。该内容在视图中被序列化,每次打开页面时都会通过网络发送,或者发送form

另一件事是这样的:例如,当您有一个页面的多个实例要保留名称时,您不希望表单的两个打开实例共享相同的变量。相反,您可以将其保存在视图中,在该视图中,您可以将该页面用于该页面,并仅保存该页面。