需要禁用Viewstate

时间:2011-09-12 18:22:55

标签: asp.net

我理解使用View状态。任何谈论视图状态的材料都解释了它的需要和用法。但是,在每个控制级别/页面级别都提供了一个选项来禁用它。

在什么情况下我们可能想要禁用页面或控件的视图状态?

从在线资料中,我读到了,

  

如果页面没有任何动态数据,则要保留数据   在往返之间我们可以禁用viewstate。

我同意这个说法,但这样做有什么好处?我们从中获得了什么?

5 个答案:

答案 0 :(得分:4)

有些网页拥有巨大的观看状态。因此,来回发送需要时间,服务器上的负载更多,网络流量更多等等。很多时候都不需要它,所以通过缩小您的视图状态,您的应用程序会更快。

请注意,即使完全禁用viewstate,由于控制要求,有时也会生成一个小的必需视图状态,但它可以大大减少。我看过每个页面的观看状态达到200kb。

答案 1 :(得分:2)

  1. 由于ViewState隐藏值设置为“”,因此有效负载较少。在显示数千条记录的数据网格中,ViewState的大小可以达到几个MB
  2. 性能得到改善,不仅因为ViewState不再被传输,而且因为读取ViewState通常是一项昂贵的操作,因为它涉及解密和反序列化值。
  3. 实际上,您可以通过禁用ViewState的加密来提高性能,但这不是一个好的安全措施。

答案 2 :(得分:1)

由于页面必须将ViewState呈现给客户端,因此如果禁用ViewState,它可以加快加载时间。

大约介绍.Net的时候,我记得在拍摄一个缓慢加载的页面时出现问题,页面渲染了一个相当大的网格,所有这些网格都保存在ViewState中。从ViewState中删除数据产生了很大的不同。

答案 3 :(得分:1)

ViewState呈现为网页中的隐藏输入字段。这会使页面加载速度变慢,并且还会使回发速度变慢,因为ViewState必须与其他所有内容一起发布。

因此,如果禁用ViewState,页面的执行速度会更快。多快了?很难说。

通常,如果您不需要ViewState,请将其禁用。

另请注意,即使您禁用ViewState,仍然会有一个隐藏控件,其中包含.NET所需的少量数据。

答案 4 :(得分:1)

当我以asp:Label或asp:Literal控件向用户显示信息或错误消息时,我几乎总是将EnableViewState设置为false,因为它们几乎总是只应用于给定的回发。将EnableViewState设置为false意味着我永远不必在我的代码隐藏中写这个:

lblSomethingWentWrong.Text = string.Empty;