I've been trying to pass data to an action after a redirect by using TempData like so:
if (!ModelState.IsValid)
{
TempData["ErrorMessages"] = ModelState;
return RedirectToAction("Product", "ProductDetails", new { code = model.ProductCode });
}
but unfortunately it's failing with the following message:
'
System.InvalidOperationException
TheMicrosoft.AspNet.Mvc.SessionStateTempDataProvider'
cannot serialize an object of type'ModelStateDictionary'
to session state.'
I've found an issue in the MVC project in Github, but while it explains why I'm getting this error, I can't see what would be a viable alternative.
One option would be to serialize the object to a json string and then deserialize it back and reconstruct the ModelState
. Is this the best approach? Are there any potential performance issues I need to take into account?
And finally, are there any alternatives for either serializing complex object or using some other pattern that doesn't involve using TempData
?