2011-09-12 82 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;