2009-05-27 7 views
0

J'ai une application serveur ASP.NET MVC et un code client qui utilise jquery. Je voudrais utiliser ajax pour transférer des objets du client au serveur et vice versa. Sur le serveur, je serais simplement en train de les valider et de les sérialiser. Sur le client, j'ai un code d'interface utilisateur pour créer une représentation visuelle et un autre code pour gérer certaines propriétés d'objet.Comment mieux partager les types logiques entre le code du serveur .NET et le code client JavaScript?

Ma question est la suivante: quelle est la meilleure façon de rassembler ces objets? Mon idée actuelle consiste simplement à renvoyer un objet enveloppé en tant que JsonResult à partir de mon action de contrôleur, mais je ne suis pas sûr de la meilleure façon de renvoyer un objet dans le monde MVC après avoir fini de travailler avec le client. Je pourrais simplement construire une chaîne JSON et la renvoyer dans MVC en tant qu'argument de chaîne sur une action de contrôleur, où je devrais décompresser manuellement le JSON dans un type de .NET. Existe-t-il un moyen de faire un mappage plus automatique dans un type .NET, ou un autre mécanisme de «commodité» qui pourrait aider à prévenir les erreurs ici (même si je dois écrire ce mécanisme de commodité)? Cela semble très similaire à l'idée de ModelBinder, et peut-être que je suis juste jeté par l'idée que j'ai l'intention d'utiliser jquery pour renvoyer JSON au serveur plutôt que d'avoir un poste "régulier". Puis-je utiliser un ModelBinder d'une manière ou d'une autre pour convertir mon JSON fourni par le client en un type de modèle heureux du côté .NET?

Répondre

4

Vous n'avez PAS à déballer manuellement le JSON dans un type .NET. Vous avez différentes bibliothèques qui le font pour vous. Personnellement, je préfère JSON.NET. Tout ce que vous auriez à faire est quelque chose comme ceci:

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

Si vous ne voulez pas d'une dépendance à une bibliothèque tierce partie, il suffit d'utiliser JavaScriptSerializer Microsoft:

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

Microsoft's documentation for JavaScriptSerializer

Questions connexes