我一直试图通过使用TempData重定向后将数据传递给一个动作,如下所示:
if (!ModelState.IsValid)
{
TempData["ErrorMessages"] = ModelState;
return RedirectToAction("Product", "ProductDetails", new { code = model.ProductCode });
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,它失败了以下消息:
"
System.InvalidOperationException的Microsoft.AspNet.Mvc.SessionStateTempDataProvider'不能序列类型的对象'ModelStateDictionary'到会话状态".
我在Github的MVC项目中发现了一个问题,但是虽然它解释了为什么我收到这个错误,但我看不出什么是可行的替代方案.
一种选择是将对象序列化为json字符串,然后将其反序列化并重新构建ModelState.这是最好的方法吗?我需要考虑哪些潜在的性能问题?
最后,是否有任何替代方法可以序列化复杂对象或使用其他不涉及使用的模式TempData?