查看或不查看状态?

时间:2011-09-16 03:25:30

标签: asp.net viewstate

我有一个webforms网站,每页有20多个控件来显示数据,我有两个选项来保持值:

  1. 使用网页控件显示我的所有值并利用ViewState。只需要在IsNotPostback时填充控件,每次使用ViewState时它们都会呈现相同的值。

  2. 禁用ViewState并在数据库的每个回发中填充控件。

  3. 我只需要去DB一次,我正在使用相同的查询填充20个控件。

    哪一个更便宜?,我应该使用ViewState吗?

5 个答案:

答案 0 :(得分:2)

基于你的输入,我认为最好在传输中来回传递ViewState开销,而不是一次又一次地向数据库执行20次往返加载数据。

当然,您可以在单个超快速数据库调用中缓存和/或查询所有需要的数据,这样最终也可能很便宜,具体取决于您的整体设计。

ViewState现在不应该是考虑快速LAN / WAN连接的一个大问题,特别是如果网站仅在Intranet中使用,那么我会离开ViewState,但我也会尝试优化/最小化db调用一般和缓存也是如此。

答案 1 :(得分:1)

通常,除非您拥有大量数据,否则请使用viewstate。这取决于应用和情况。

我的建议是你现在就使用它,并在以后优化。您甚至可以为具有大量数据的特定控件禁用viewstate。看来你没有足够的理由不立即使用它。

答案 2 :(得分:1)

我不认为ViewState对于大约20个控件来说可能是一个很大的负担。您可以更轻松地进行第一次尝试,并在必要时进行改进。但是,这取决于您的应用程序中使用的数据。

我觉得下面很有趣。

Improve Performance By Compressing ViewState

答案 3 :(得分:0)

这取决于,我通常不会过多担心控件的视图状态,例如下拉等(前提是它没有填充100个项目,这将使其无法使用)。

对于像grid这样的控件,我会关闭视图状态,特别是telerik(它有很好的选择)。

顺便说一下,您可以使用缓存来保存数据库的行程。

答案 4 :(得分:0)

使用jquery ajax渲染html,以便viewstate没有问题。这样可以提高性能,减少服务器的负担。

Dynamicloading