2017-01-18 35 views
1

我不能用静态JsonConvert设置,并在我的过滤器,我需要根据当前MvcJsonOptions格式化字符串:如何在AspNet Core 1.1中注入MvcJsonOptions?

services.AddMvc().AddJsonOptions(x => 
{ 
    x.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
}); 

class ReturnBadRequestForInvalidModelFilter : IAsyncActionFilter 
    { 
     private readonly MvcJsonOptions _options; 

     public ReturnBadRequestForInvalidModelFilter(MvcJsonOptions options) 
     { 
      _options = options; 
     } 

     ... 

     private string FormatPropertyName(string key) 
     { 
      if (string.IsNullOrEmpty(key)) 
       return key; 

      return _options.SerializerSettings.ContractResolver is CamelCasePropertyNamesContractResolver 
       ? char.ToLowerInvariant(key[0]) + key.Substring(1) 
       : key; 
     } 
+0

这是否不行?它错误吗?不清楚你的问题是什么,对不起。 –

+0

它失败了,'MvcJsonOptions'不是服务。 – smg

回答

1

的灵感来自JsonResultExecutor.cs尝试使用IOptions<MvcJsonOptions>

public class YourClass 
{ 
    public MvcJsonOptions JsonOptions { get; set; } 

    public YourClass(IOptions<MvcJsonOptions> mvcJsonOptions) 
    { 
     JsonOptions = mvcJsonOptions.Value; 
    } 
} 
相关问题