2009-05-27 5 views
0

Ich habe eine ASP.NET MVC Server App und Client-Code, der jquery verwendet. Ich möchte Ajax verwenden, um Objekte von Client zu Server und zurück zu übertragen. Auf dem Server würde ich sie im Grunde nur validieren und serialisieren. Auf dem Client habe ich einen UI-Code, um eine visuelle Darstellung und einen anderen Code zum Verwalten einiger Objekteigenschaften zu erstellen.Wie teilen Sie am besten logische Typen zwischen .NET-Servercode und JavaScript-Clientcode?

Meine Frage ist das: Was ist der beste Weg für mich, um diese Objekte herum zu marschieren? Meine derzeitige Idee besteht darin, ein Objekt, das als JsonResult eingepackt ist, von meiner Controller-Aktion zurückzugeben, aber ich bin mir nicht sicher, wie ich ein Objekt am besten wieder in die MVC-Welt überführen kann, nachdem ich damit fertig bin. Ich könnte einfach eine JSON-Zeichenfolge erstellen und sie als String-Argument an eine Controller-Aktion in MVC zurückgeben, wo ich die JSON-Datei manuell in einen .NET-Typ entpacken müsste. Gibt es eine Möglichkeit, ein automatisches Mapping in einen .NET-Typ oder einen anderen "Komfort" -Mechanismus durchzuführen, der dabei helfen könnte, Fehler zu vermeiden (selbst wenn ich diesen Komfortmechanismus schreiben muss)?

Dies scheint sehr ähnlich zu der ModelBinder-Idee, und vielleicht bin ich nur von der Idee, dass ich beabsichtige, jquery zu verwenden, um JSON zurück auf den Server zu schieben, anstatt eine "normale" Form Post. Könnte ich irgendwie einen ModelBinder verwenden, um meinen Client-bereitgestellten JSON in einen glücklichen Modelltyp auf der .NET-Seite zu konvertieren?

Antwort

4

Sie müssen den JSON nicht manuell in einen .NET-Typ entpacken. Sie haben verschiedene Bibliotheken, die das für Sie tun. Ich persönlich bevorzuge JSON.NET. Alles, was Sie zu tun haben würde, ist so etwas wie dieses:

var deserializedObject = JsonConvert.DeserializeObject<ObjectType>(json); 

Wenn Sie nicht eine Abhängigkeit von einem Dritten Bibliothek möchten, verwenden Sie nur Microsofts JavaScriptSerializer:

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
var deserializedObject = serializer.Deserialize<ObjectType>(json); 

Microsoft's documentation for JavaScriptSerializer

Verwandte Themen