ViewState存储在哪里?

时间:2012-06-11 08:45:05

标签: asp.net viewstate

ViewState存储在哪里?它是存储在服务器端还是客户端?

我有一个庞大的数据应该存储在一些进程中。我正在使用Session。但是当从一个页面移动到另一个页面时我无法清除会话。所以我想到了实现ViewState。但是当运行大量数据时,ViewState会抛出错误吗?

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:9)

Viewstate以编码形式存储在页面上。您无法以直接方式访问客户端中的视图状态。您需要知道编码/解码算法,以便在客户端代码中从此视图状态中获取有价值的数据。

您可以使用隐藏变量来存储仅在该页面上使用的数据。可以从客户端和服务器端代码访问隐藏变量。

您可以使用Cache或session来存储数据表(大数据)。与ViewState相比,它们具有良好的性能。

缓存始终使用机器的内存,会话使用已配置的内容:

在Web场中,Session可以是本地的(仅在设置了关联时才有效)或远程(状态服务器或数据库或自定义),但缓存始终是本地的。

因此,在缓存中存储DataTable会消耗内存,但不会使用序列化。

PS:存储DataSet而不是DataTable几乎不会改变任何内容。

Refer Cache Implementation

答案 1 :(得分:7)

ViewState不会存储在任何一方,它会在每次请求和响应时在服务器和浏览器之间来回发送,因此在ViewState中放入大量数据并不是一个好主意。

答案 2 :(得分:3)

ViewState存储在您告诉它的位置。默认情况下,这是在发送给客户端的页面上的隐藏字段中。

ASP.NET can also store ViewState inside the Session,即在服务器上,如果你告诉它。

答案 3 :(得分:1)

在视图状态下保存大量数据会减慢您的网站速度。 使用查询字符串从每个页面上的数据库中获取新副本,而不是保存上一页的全部信息。

答案 4 :(得分:0)

在隐藏字段中查看状态信息存储。 信息在这个隐藏的字段中在服务器和客户端之间传播。

对于asp.net控件,..默认情况下.net实现其所有控件的视图状态,这就是当我们点击该页面的按钮时文本框值不会丢失的原因。