2013-03-12 106 views
1

我目前有一個asp.net網站,用於存儲服務器端的所有viewstate。我遇到過一個問題。我有一個登陸頁面,在GridView中列出了一些統計數據,每一行都有一個「查看」按鈕,這個按鈕會轉到一個頁面,其中包含所選統計數據的詳細列表。Asp.net緩存查詢

如果用戶使用後退按鈕返回到主列表,並在重複10次重複初始着陸頁失去所有狀態後重覆按下「查看」​​按鈕的過程。我已經通過在web配置中設置<sessionPageState historySize="40">來解決這個問題,該配置允許上述過程重複40次,直到初始着陸頁失去所有狀態並需要完全重新加載。

現在,這裏解決了這個問題,但顯然當其他頁面出現問題時,用戶使用網站的其餘部分時導致會話狀態很大。解決這個問題的最佳方法是什麼?

由於

+0

對於初學者來說,'View State'不存儲在服務器端。它是ASP.NET頁面上隱藏字段中的客戶端。你試圖完成什麼?你可能應該使用'Session'而不是'View State' – 2013-03-12 19:49:49

+0

也許他已經覆蓋PageStatePersister – NickD 2013-03-12 19:57:17

+0

是的,我覆蓋了PageStatePersister,很遺憾錯過了有助於設置: Pixelstiltskin 2013-03-12 20:37:24

回答

-1

View State被設計用於存儲在頁面上的對象的狀態被加載。它不是存儲在服務器端,它是頁面控件的集合,它們的值是以頁面發出的Base 64編碼字符串。

要在頁面之間傳遞數據,您應該查看Session,只要用戶處於活動狀態(直到會話過期或您手動終止該數據),該數據就會持續存在。

+1

當你說session時,你的意思是緩存嗎? http://brockallen.com/2012/04/07/think-twice-about-using-session-state/ – felickz 2013-03-12 19:57:24

+0

@felickz沒有關於提問者做什麼的更多細節'Session'是我的第一個建議,因爲它不是設置複雜。對所有情況來說都不是好事,但對所有情況都沒有錯。我想傳達給提問者的基礎是考慮使用一些ASP.NET緩存機制,它不是爲多頁面場景中的單個頁面場景設計的。 – 2013-03-12 20:09:11