Almacenar objetos complejos en TempData

He estado tratando de pasar datos a una acción después de una redirección usando TempData de esta manera:

if (!ModelState.IsValid)
{
    TempData["ErrorMessages"] = ModelState;
    return RedirectToAction("Product", "ProductDetails", new { code = model.ProductCode });
}

pero desafortunadamente falla con el siguiente mensaje:

'System.InvalidOperationException losMicrosoft.AspNet.Mvc.SessionStateTempDataProvider' no se puede serializar un objeto de tipo'ModelStateDictionary' al estado de sesión ".

He encontrado un problema enEl proyecto MVC en Github, pero aunque explica por qué recibo este error, no puedo ver cuál sería una alternativa viable.

Una opción sería serializar el objeto en una cadena json y luego deserializarlo nuevamente y reconstruir elModelState. ¿Es este el mejor enfoque? ¿Hay algún problema potencial de rendimiento que deba tener en cuenta?

Y finalmente, ¿hay alguna alternativa para serializar objetos complejos o usar algún otro patrón que no implique usarTempData?

Respuestas a la pregunta(2)

Su respuesta a la pregunta