Force CamelCase on ASP.NET WebAPI Per Controller

Yes, it's possible...you can use IControllerConfiguration to define per-controller specific configuration..

This is a sample which describes this scenario. You can quickly take a look at how this interface should be used over here(from the sample).


This Stack Overflow answer should be helpful. It shows you how to create an ActionFilter which can be applied to any action where you wish to use CamelCasing.


Thanks to @KiranChalla I was able to achieve this easier than I thought.

Here is the pretty simple class I created:

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);

  }
}

Then just add the attribute to any Controller class you want CamelCase.

[CamelCaseControllerConfig]