我有一个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' 未标记为可序列。
奇怪我无法找到共享我的方案的单个线程。任何人?