在每个控制器 ASP.NET WebAPI 上强制驼峰案例



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

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

这可能吗?

多亏了@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);
  }
}

然后,只需将该属性添加到您想要的任何控制器类中 CamelCase。

[CamelCaseControllerConfig]

是的,有可能...您可以使用IControllerConfiguration来定义每个控制器的特定配置。

这是描述此方案的示例。您可以在此处快速查看应如何使用此接口(来自示例)。

这个堆栈溢出答案应该会有所帮助。它向您展示了如何创建一个动作过滤器,该过滤器可以应用于您希望使用CamelCasing的任何操作。

我知道

这已经很老了,但我对接受的答案有问题,因为在删除和重新添加后,格式化程序还有其他必要的更改不再存在。我只是通过修改现有的格式化程序来做到这一点,如以下 Gist: https://gist.github.com/mauricedb/5356933 所示。

相关内容

  • 没有找到相关文章

最新更新