Asp.net
在 SessionPageStatePersister 中保持 ViewState
我想在會話中保留特定頁面的視圖狀態,但是下面的程式碼塊對我沒有幫助,我可能會失去什麼?
所以這是我頁面的程式碼隱藏文件內容;
public partial class ConfigurationEditorWebForm : PageBase { protected void Page_Load(object sender, EventArgs e) { } protected override bool VerifyAccess() { return true; } protected override PageStatePersister PageStatePersister { get { return new SessionPageStatePersister(this); } } }
請注意,即使將頁面狀態移動到視圖狀態後,您仍然會在頁面上看到 __Viewstate 元素。
另外,我相信這個解決方案可能比其他提供的解決方案更正確,因為它更優雅地處理後退按鈕。當您將 ViewState 儲存在隱藏變數中時,它成為 HTML 的一部分,因此如果使用者點擊後退按鈕 2 或 3 頁並繼續他正在做的事情,它就可用。在每個頁面請求中盲目地丟棄 Viewstate 將阻止後退按鈕按使用者期望的方式執行。
但是,首先要注意這可能不是一個好主意。我建議至少先做兩件事:
首先,確保您已關閉所有不需要它的控制項上的 Viewstate(可能是大多數控制項)。您可以通過將“IsViewstateEnabled”設置為 false 來執行此操作。
其次,在您的網路伺服器上打開 http 壓縮。即使您有一個合理大小的視圖狀態,總頁面重量(壓縮時 -不是在您的瀏覽器中查看的)應該相對較小。
希望有幫助!