Хранить сложный объект в TempData
Я пытался передать данные в действие после перенаправления с помощью TempData следующим образом:
if (!ModelState.IsValid)
{
TempData["ErrorMessages"] = ModelState;
return RedirectToAction("Product", "ProductDetails", new { code = model.ProductCode });
}
но, к сожалению, он не работает со следующим сообщением:
'System.InvalidOperationException
Microsoft.AspNet.Mvc.SessionStateTempDataProvider'
не может сериализовать объект типа'ModelStateDictionary'
в состояние сеанса.
Я нашел проблему впроект MVC в Github, но в то время как это объясняет, почему я получаю эту ошибку, я не вижу, что было бы жизнеспособной альтернативой.
Одним из вариантов будет сериализация объекта в строку json, а затем десериализация его и восстановлениеModelState
, Это лучший подход? Есть ли потенциальные проблемы с производительностью, которые я должен принять во внимание?
И, наконец, есть ли альтернативы для сериализации сложного объекта или использования какого-либо другого шаблона, который не предполагает использованияTempData
?