ASP.NET 4.0 (一):ViewStateMode 介紹、應用以及與EnableViewState的區別

ASP.NET 4.0 新推出了一個功能是 ViewStateMode, 相信大家一開始看到這功能,一定會跟EnableViewState比較, 已經有EnableViewState了,為何又多出了一個 ViewStateMode ?

ASP.NET 4.0 新推出了一個功能是 ViewStateMode,
相信大家一開始看到這功能,一定會跟EnableViewState比較,
已經有EnableViewState了,為何又多出了一個  ViewStateMode ?

但是其實兩者是有區別的,而且在了解用法後,
個人非常喜歡這設定,並且覺得非常實用。

 

ViewStateMode 的屬性內容

Member nameDescription
InheritInherit the value of ViewStateMode from the parent Control.
EnabledEnable view state for this control even if the parent control has view state disabled.
DisabledDisable view state for this control even if the parent control has view state enabled.

預設值是 Inherit

其實光是看MSDN上的解釋,真的看不來與EnableViewState的區別。

於是我做了一些實驗,並仔細參考MSDN的說明,得到以下的結論

 

EnableViewState

1.決定其控件以及子控件是否啟用ViewState。

 

ViewStateMode

1.在父控件以及本身的EnableViewState為true時,此設定才起作用。

2.決定此控件及子控件是否啟用ViewState。

3.此設定不受父控件的ViewStateMode影響。

 

EnableViewState vs ViewStateMode

1.EnableViewState的優先權大於 ViewStateMode,只要EnableViewState設定為false,即使ViewStateMode設定為true,此控件的ViewState還是關閉的。

2.父控件 EnableViewState 設定為 false,其子控件的ViewState一定是關閉的,沒有機會單獨開啟某個子控件的ViewState。

3.父控件 ViewStateMode 設定為 Disabled,子控件可以單獨設定成 ViewStateMode = Enabled,允許在父控件ViewState關閉下,開啟子控件的ViewState。


 

使用時機

假如今天我希望將Page的ViewState關閉,但是又想開啟其中幾個Control的ViewState,在之前是做不到的,
現在可以利用ViewStateMode功能,做法如下

1.將 Page 的 ViewStateMode 設定為 Disabled。

2.將 需要使用ViewState 的Control,其 ViewStateMode 設定為 Enable。

就可以達到將整個 Page 的ViewState 關閉,又能視情況將部分需要 ViewState 的 Control ,開啟 ViewState。
(此應用也適用於 MasterPage)

 

建議

1.如果在熟知 ViewState 的運作下,建議預設將 Page 的 ViewStateMode 設定為 Disabled,只將必須使用ViewState的 Control ,ViewStateMode設定為 Enabled。
這是因為 ViewState 其實對網路傳輸會造成很大的影響,並且增加整個頁面的大小。

2.所有靜態頁面(純粹顯示資料用的頁面,並且沒有submit按鈕),務必將整個Page的 EnableViewState 設定為 false,用以減少Page大小,以增加效能。

 

參考資料

Control.ViewStateMode Property




 


 

  • 如果您覺得這篇文章有幫助,請您幫忙推薦一下或按上方的""給予支持,非常感激
  • 歡迎轉載,但請註明出處
  • 文章內容多是自己找資料學習到的心得,如有不詳盡或錯誤的地方,請多多指教,謝謝