Asp.net

在 SessionPageStatePersister 中保持 ViewState

  • March 23, 2011

我想在會話中保留特定頁面的視圖狀態,但是下面的程式碼塊對我沒有幫助,我可能會失去什麼?

所以這是我頁面的程式碼隱藏文件內容;

   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 壓縮。即使您有一個合理大小的視圖狀態,總頁面重量(壓縮時 -不是在您的瀏覽器中查看的)應該相對較小。

希望有幫助!

引用自:https://stackoverflow.com/questions/386131