2010-09-01 70 views
7

在我的asp.net-mvc項目中我有一個AccountController,它在登錄時將用戶首選項的cookie設置爲Request.Response,然後執行RedirectToAction。 重定向後,Cookie被重置,所以我失去了我的設置。Response.Cookies在RedirectToAction被調用時被重置

我能想出的唯一解決方案是將數據從cookie中的數據添加到tempdata中,然後在RedirectToAction的目標操作中再次獲取它。這是偏離當然有點向後...

這是一種常見的做法?有沒有更好的解決方案?我應該不同地處理我的Cookie嗎?

回答

2

,使用TempData因爲這是一種常見的做法,這是非常符合TempData應該如何使用 - 只傳遞由客戶端重定向分開的兩個動作方法之間的臨時數據。

由於登錄頁面的重定向可以是任何其他操作方法,因此您可以使用實現從基本控制器中的TempData中設置Cookie的功能。這將使任何行動方法cookie-via-TempData兼容。這是在頁面上顯示通知時的常見情況,其中通知(如本網站上的通知)通常會從TempDataViewData自動

+0

我希望能有更好的實施。如果我以這種方式執行它,我將失去我所有的解耦。 – 2010-09-02 09:08:47

+0

@boris什麼解耦,具體是什麼? – bzlm 2010-09-02 10:17:21

+0

我將我的用戶會話處理從我的控制器中提取出來,因此,Cookie不會讓我的測試搞砸,而且如果我能找到一種方法,只要有一半的想法擺脫會話的非休息部分。現在我的控制器需要再次知道我的會話的實現(從tempdata獲取cookie),我的會話需要知道我的控制器(將它放在tempdata中)。 – 2010-09-02 10:26:23