我有一個MVC3網絡應用程序。我一直在使用PRG(Post-Redirect-Get)模式。即在回發期間,如果任何模型驗證失敗,我將persist the ViewData in TempData然後重定向到原始的GET操作。與SessionState MVC PRG模式衝突
在後動作 -
if (!ModelState.IsValid)
TempData["ViewData"] = ViewData;
在GET動作後 -
if (TempData["ViewData"] != null)
ViewData = (ViewDataDictionary)TempData["ViewData"];
這幾乎是通常的做法。一切工作都很好,直到日期。 現在,我們需要改進會話持久性,這是我們需要「更長」的會話。我已經結束使用ASP.Net State Server。
之後,我移居我的會話狀態服務器 -
web.config -
<system.web> ...
<sessionState timeout="180" mode="StateServer" cookieless="UseCookies" />
...
我開始對其中一些存儲自定義對象我的會話「無法序列化」的錯誤。我已經做了這樣的對象[可序列化]其中整理了問題。但現在我堅持使用上述PRG模式!
錯誤 - 類型 'System.Web.Mvc.ViewDataDictionary' 在大會 'System.Web.Mvc,版本= 3.0.0.0,文化=中立, 公鑰= 31bf3856ad364e35' 未標記爲可序列。
奇怪我無法找到共享我的方案的單個線程。任何人?