Mvc: 如何在 RTM 中设置 OutputFormatters

创建于 2016-07-05  ·  4评论  ·  资料来源: aspnet/Mvc

如果现在是私有成员,我该如何分配各种 OutputFormatter 成员? 在 RC2 他们不是

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

所有4条评论

您应该调用 AddJsonOptions 来配置要配置它们的格式化程序设置。 请参阅https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.Formatters.Json/DependencyInjection/MvcJsonMvcBuilderExtensions.cshttps://github.com/aspnet/Mvc/blob/dev /src/Microsoft.AspNetCore.Mvc.Formatters.Json/MvcJsonOptions.cs

这将配置输入和输出格式化程序的设置。 如果您只想配置输出格式化程序的设置,您应该删除现有的一个,新建另一个并将其添加到 MVC 选项中的输出格式化程序列表中。 希望这可以帮助。

AddJsonOptions方法不是IMvcCoreBuilder的扩展,而不是IMvcBuilder这有充分的理由吗? 我认为 JSON 输出选项对于 MVC Core 足够的以 API 为中心的项目同样重要(如果不是更重要的话)。

@nil4 - 如果缺少它,我们应该添加它。 https://github.com/aspnet/Mvc/issues/4967

您可以通过将委托传递给AddJsonFormatter来完成AddJsonOptions所做的一切

我认为在 AddMvcCore 的情况下,最好在调用 AddJsonFormatter 时配置它,而不是在 IMvcCoreBuilder 上添加另一个 AddJsonOption 方法。 这样做的原因是以下链是有效的,但会产生不正确的配置。

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


The right thing to do would be

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

到那时,这样做会更简单

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

此页面是否有帮助?
0 / 5 - 0 等级