Mvc: Comment définir OutputFormatters dans RTM

Créé le 5 juil. 2016  ·  4Commentaires  ·  Source: aspnet/Mvc

Comment attribuer les différents membres OutputFormatter s'ils sont maintenant des membres privés ? dans RC2 ils n'étaient pas

services.AddMvc(options =>
{
     var formatter = options.OutputFormatters.First(f => f is JsonOutputFormatter) as JsonOutputFormatter;
     formatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
     formatter.SerializerSettings.DefaultValueHandling = DefaultValueHandling.Ignore;
     formatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
})
question

Tous les 4 commentaires

Vous devez appeler AddJsonOptions pour configurer les paramètres des formateurs que vous souhaitez les configurer. Voir https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.Formatters.Json/DependencyInjection/MvcJsonMvcBuilderExtensions.cs et https://github.com/aspnet/Mvc/blob/dev /src/Microsoft.AspNetCore.Mvc.Formatters.Json/MvcJsonOptions.cs

Cela configurera les paramètres des formateurs d'entrée et de sortie. Si vous souhaitez configurer uniquement les paramètres du formateur de sortie, vous devez supprimer le oneE existant, en créer un autre et l'ajouter à la liste des formateurs de sortie dans les options MVC. J'espère que cela t'aides.

Y a-t-il une bonne raison pour laquelle la méthode AddJsonOptions n'est pas une extension sur IMvcCoreBuilder par opposition à IMvcBuilder ? Je pense que les options de sortie JSON sont tout aussi importantes (sinon plus) pour les projets axés sur les API où MVC Core est suffisant.

@ nil4 - si cela manque, nous devons l'ajouter. https://github.com/aspnet/Mvc/issues/4967

Vous pouvez faire tout ce que AddJsonOptions fait en passant un délégué à AddJsonFormatter

Je pense que dans le cas AddMvcCore, il est préférable de le configurer lorsque vous appelez AddJsonFormatter au lieu d'ajouter une autre méthode AddJsonOption sur IMvcCoreBuilder. La raison en est que la chaîne suivante serait valide mais produirait une configuration incorrecte.

``` C#
services.AddMvcCore()
.AddJsonOptions(options => ... )


The right thing to do would be

``` C#
services.AddMvcCore()
   .AddJsonFormatter()
   .AddJsonOptions()

Et à ce moment-là, il sera plus simple de faire

C# services.AddMvcCore() .AddJsonFormatters(settings => ...)

Cette page vous a été utile?
0 / 5 - 0 notes