在每个控制器的ASP.NET WebAPI上强制使用CamelCase

Bra*_*ord 31 asp.net asp.net-web-api

在ASP.NET WebAPI中,我知道您可以使用global.aspx中的CamelCasePropertyNamesContractResolver()将默认的json格式化程序设置为使用驼峰大小写,这将强制所有json序列化为驼峰大小写.

但是,我需要能够在"每个控制器"实例上设置它,而不是全局解决方案.

这可能吗?

Bra*_*ord 66

感谢@KiranChalla,我能够比我想象的更轻松.

这是我创建的非常简单的类:

using System;
using System.Linq;
using System.Web.Http.Controllers;
using System.Net.Http.Formatting;
using Newtonsoft.Json.Serialization;

public class CamelCaseControllerConfigAttribute : Attribute, IControllerConfiguration 
{
  public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
  {
    var formatter = controllerSettings.Formatters.OfType<JsonMediaTypeFormatter>().Single();
    controllerSettings.Formatters.Remove(formatter);

    formatter = new JsonMediaTypeFormatter
    {
      SerializerSettings = {ContractResolver = new CamelCasePropertyNamesContractResolver()}
    };

    controllerSettings.Formatters.Add(formatter);

  }
}
Run Code Online (Sandbox Code Playgroud)

然后只需将该属性添加到您想要CamelCase的任何Controller类中.

[CamelCaseControllerConfig]
Run Code Online (Sandbox Code Playgroud)


Kir*_*lla 10

是的,它可能......你可以IControllerConfiguration用来定义每个控制器的特定配置..

是描述此场景的示例.您可以快速查看此界面应如何在此处使用(来自示例).