2010-09-08 19 views
0

簡短的問題是:「如何將當前網址保存到Cookie文件中?」將當前網址轉換爲Cookie文件

而整個問題如下。我必須保存客戶端在他的Cookie中應用到我的網格中的當前過濾器,下次他登錄數據看起來就像他想要的樣子。該服務沒有任何「登錄」的東西,只是向用戶提供可用的數據。這整個事情是用ASP.MVC/C#編寫的。

如果您有任何其他解決方案來完成此任務,我將很樂意與您討論!

謝謝你給我一分鐘。

回答

3

http://msdn.microsoft.com/en-us/library/ms178194.aspx

總之,你可以通過調用Response.Cookies訪問用戶的Cookie數據得到的HttpCookie的字典對象通過你給每個Cookie(很像Session或ViewState的數據存儲)的名稱作爲關鍵字。您可以通過在索引器中指定一個cookie名稱來添加它,就像它在那裏並設置Value和ExpirationDate屬性,或者創建一個新的HttpCookie並調用Cookies.Add。

儘管cookie最多可包含4k的數據,但可能不需要存儲整個URL。我會將查詢字符串(具有相關的過濾器設置)存儲在該特定頁面將知道的唯一名稱下(可能爲「<page name here>FilterSettings」)以獲取其cookie數據。然後,在PreInit上,獲取請求,並且如果其QueryString爲空,但是存在具有保存的過濾器設置的Cookie,則將保存的查詢字符串粘貼到當前url並重定向。

請記住,客戶端可以控制是否保存cookie數據;瀏覽器可以接受所有信息,接受來自可信來源的請求,或者拒絕全部信息。在這種情況下,沒有什麼大不了的;這是純粹的便利,這正是一個cookie應該使用的。如果這是有價值的數據,則可能必須基於用戶堅持服務器端。

+0

那就是我一直在尋找的。非常感謝!這對於我的應用來說已經足夠了。我通常不會在客戶端保存任何數據。但是這次是堅持數據的唯一途徑。再次感謝! – 2010-09-09 06:49:45

+0

爲什麼你必須在preinit中獲取cookie數據而不是在page_onload事件中? – 2011-04-29 11:36:58

+0

它不一定是OnPreInit,但這是ASP生命週期中最早的可處理事件。如果在開始之前知道IIS只是重新開始查詢字符串,則無需使用IIS進行初始化階段。 – KeithS 2011-12-21 18:03:51