最佳答案
我一直试图通过像下面这样使用 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
的其他模式,是否有其他选择?