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

  }
}

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

[CamelCaseControllerConfig]

Asp.net相关问答推荐

在 Web.Config 的 Location Path 元素中指定多个目录

如何删除字符串的定义部分?

如何获取已构建、编码的 ViewState 的值?

创建一个供 ASP.NET 应用程序中的所有线程使用的静态 Regex 对象是否有效?

IE10 SCRIPT5009:__doPostBack未定义

无法获取项目引用的依赖项

有没有一种简单的方法可以将对象属性转换为字典

ASP.NET MVC 中的 ASP.NET AJAX 与 jQuery

多行文本框多个换行符

Web.config 导致被组策略阻止错误

ASP.NET IIS - 请求何时排队?

HttpContext.Current.Request.IsAuthenticated 和 HttpContext.Current.User.Identity.IsAuthenticated 有什么区别?

带有 ASP.NET MVC 6 锚标记助手的 QueryString

如何在 ASP.Net Core Razor 页面上重定向

ASP.NET 中的多选下拉列表

在 C# 中动态创建 Json

如何从 ASP.NET Identity 获取用户列表?

在 ASP.NET 中获取服务器的 IP 地址?

如何创建代表 colored颜色 的随机十六进制字符串?

在 ASP.NET 中使用 SecureString 有什么好处吗?