我想了解SessionPageStatePersister如何與Web瀏覽器,ViewState和SessionState進行交互。我一直認爲使用指定SessionPageStatePersister(而不是HiddenFieldPageStatePersister)的PageAdapter會將所有ViewState存儲到SessionState中。爲什麼ASP.Net SessionPageStatePersister.ControlState存儲在Page.RequestViewStateString中而不是在SessionState中?
檢查Reflector中的SessionPageStatePersister之後,我開始質疑這個假設。在查看SessionPageStatePersister的Save方法時,SessionPageStatePersister.ControlState屬性仍然存儲在RequestViewStateString(SessionPageStatePersister.ViewState存儲在SessionState中)。
任何人都可以對此ControlState信息沒有存儲在SessionState嗎?看起來,需要存儲在RequestViewStateString中的唯一數據是SessionState鍵的日期戳記:"__SESSIONVIEWSTATE" + Convert.ToString(DateTime.Now.Ticks, 16)
。
謝謝!我測試了您的解決方案,現在頁面中的__VIEWSTATE隱藏字段很少。它看起來應該是默認情況下發生的。 –