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