Komplexes Objekt in TempData speichern

Ich habe versucht, Daten nach einer Umleitung mit TempData an eine Aktion zu übergeben:

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

aber leider schlägt es mit der folgenden Meldung fehl:

'System.InvalidOperationException DasMicrosoft.AspNet.Mvc.SessionStateTempDataProvider' kann ein Objekt vom Typ @ nicht serialisier'ModelStateDictionary' zum Sitzungsstatus. '

Ich habe ein Problem in @ gefund das MVC-Projekt in Github, aber während es erklärt, warum ich diesen Fehler erhalte, kann ich nicht sehen, was eine praktikable Alternative wäre.

Eine Option wäre, das Objekt in eine JSON-Zeichenfolge zu serialisieren und es dann wieder zu deserialisieren und das @ zu rekonstruiereModelState. Ist das der beste Ansatz? Gibt es potenzielle Leistungsprobleme, die ich berücksichtigen muss?

Und schließlich gibt es Alternativen, um komplexe Objekte zu serialisieren oder ein anderes Muster zu verwenden, bei dem @ nicht verwendet wirTempData?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage