59 votes

ASP.Net MVC4 - Définition du sérialiseur JSON par défaut

Je vais avoir un moment difficile de trouver la réponse à ceci:

Je suis en train de travailler sur une application existante qui a été partiellement convertie à la MVC. Chaque fois qu'un contrôleur répond avec un JSON ActionResult, les enums sont envoyés comme des nombres opposés au nom de la chaîne. Il semble que le défaut sérialiseur doit être JSON.Net qui devrait être l'envoi de la enums plus comme leurs noms l'opposition à la représentation entière, mais ce n'est pas le cas ici.

Ai-je raté une web.paramètre de configuration qui définit ce que le défaut sérialiseur? Ou est-il un autre paramètre qui doit être changé?

Merci!

73voto

nemesv Points 71516

Dans ASP.Net MVC4 la valeur par défaut JavaScript sérialiseur qui est utilisé dans l' JsonResult classe est toujours la JavaScriptSerializer (vous pouvez le vérifier dans le code)

Je pense que vous avez confondu avec le ASP.Net Web.API où JSON.Net la valeur par défaut est JS sérialiseur mais MVC4 ne l'utilise pas.

Vous devez configurer les JSON.Net travailler avec MVC4 (essentiellement, vous avez besoin pour créer votre propre JsonNetResult), il y a beaucoup d'articles à ce sujet:

Si vous aussi vous souhaitez utiliser JSON.Net pour controller les paramètres de l'action lors de la liaison de modèle, alors vous devez écrire votre propre ValueProviderFactory mise en œuvre.

Et vous avez besoin d'enregistrer votre application avec:

ValueProviderFactories.Factories
    .Remove(ValueProviderFactories.Factories
                                  .OfType<JsonValueProviderFactory>().Single());
ValueProviderFactories.Factories.Add(new MyJsonValueProviderFactory());

Vous pouvez utiliser le construit en JsonValueProviderFactory d'exemple ou de cet article: ASP.NET MVC 3 – Amélioration de la JsonValueProviderFactory à l'aide de Json.Net

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X