2011-09-12 116 views
0

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

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

从网上资料,我读了,

如果页面没有任何动态数据,数据要往返,我们可以禁用ViewState中之间持续 。

我同意这种说法,但是这样做的优点是什么?我们从中得到什么?

回答

4

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

采取注有时甚至完全禁用ViewState中会产生还是因为控制需求的一小所需的视图状态,但它可以大大降低。我已经看到viewstates每页进入200kb。

1

由于页面必须呈现ViewState中的客户端可以加快加载时间,如果的ViewState被禁用。

大约在净引入记得的故障排除这是加载缓慢的页面时,页面被渲染相当大电网所有这些都被保存到ViewState中。从ViewState中删除数据产生了很大的不同。

2
  1. 由于ViewState隐藏值设置为“”,所以可以减少负载。在显示的记录几千DataGrid中,ViewState中可以成为大小为几个MB
  2. 性能将得到改善,不仅是因为ViewState是不转移了,但也因为读书的ViewState通常是昂贵的操作,因为它涉及解密它和反序列化值。

实际上,只需禁用ViewState加密即可提高性能,但这不是一个好的安全措施。

1

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

因此,如果禁用ViewState,您的页面将执行得更快。快多少?很难说。

一般来说,如果您不需要ViewState,请将其禁用。

还要注意,即使禁用ViewState中,仍然会有一个隐藏的控制与数据量小是neccessary为.NET。

1

当我显示信息或错误信息给用户作为ASP:标签或ASP:文字控制,我几乎总是设置的EnableViewState为false,因为他们几乎总是只适用于一个给定的后背部。将EnableViewState设置为false意味着我永远不必在我的代码隐藏中编写此代码:

lblSomethingWentWrong.Text = string.Empty;