SessionState和ViewState有什么区别?

时间:2009-04-09 09:24:35

标签: asp.net session-state viewstate

ASP.NET中的SessionState和ViewState有什么区别?

5 个答案:

答案 0 :(得分:137)

会话状态包含与服务器的特定会话(由特定客户端/浏览器/计算机)相关的信息。这是一种跟踪用户在网站上正在做什么的方法.. 跨多个页面 ......在无状态网络中。例如特定用户的购物车的内容是会话数据。 Cookie可用于会话状态 另一方面,查看状态是特定于特定网页的信息。它存储在隐藏字段中,以便用户不可见。它用于维护用户的错觉,即页面记得他最后一次在上面做了什么 - 每次回帖都不要给他一个干净的页面。 Check this page for more

答案 1 :(得分:93)

会话状态保存在服务器上,ViewState保存在页面中。

会话状态通常在用户不活动一段时间后被清除(没有请求包含请求cookie中的会话ID)。

视图状态在后续帖子中发布在隐藏字段中。

答案 2 :(得分:31)

<强> SessionState的

  • 可以保留在内存中,这使其成为一种快速解决方案。这意味着无法在Web场/ Web园中共享状态。
  • 可以保存在数据库中,对Web Farms / Web Gardens非常有用。
  • 在会话终止时被清除 - 通常在不活动20分钟后。

<强>视图状态

  • 在服务器和客户端之间来回传输,占用带宽。
  • 没有失效日期。
  • 在Web场/ Web园中很有用

答案 3 :(得分:13)

<强>用法: 如果您要存储要在不同网页上访问的信息,可以使用SessionState

如果您想要存储您想要从同一页面访问的信息,那么您可以使用Viewstate

<强>存储 Viewstate存储在页面本身(加密文本中),而Sessionstate存储在服务器中。

SessionState将在以下条件中清除

  1. 程序员清除
  2. 由用户清除
  3. 超时

答案 4 :(得分:5)

会话主要用于存储用户特定数据[会话特定数据]。在会话的情况下,您可以使用整个会话的值,直到会话到期或用户放弃会话。 Viewstate是仅在使用它的页面中具有范围的数据类型。除非将这些值传输到所需页面,否则您可以使用其他页面可访问的viewstate值。同样在viewstate的情况下,所有服务器端控制数据都作为__Viewstate中的键值对传输到服务器,并在发生回发时传回并呈现给客户端中的相应控件。