Problema con la serialización de datos usando JSON.Net

Estoy usando un Kendo Scheduler en mi aplicación para extraer datos de mi base de datos usando una API web. Creé una función Web Api y simplemente codifiqué algunos datos allí para asegurarme de que Kendo Scheduler pudiera leer mis datos. Aquí está mi código para la función Api:

    [Route("api/v1/Events/GetPersonalEvents", Name = "ApiEventsGetPersonalEvents")]
    [HttpGet]
    public DataSourceResult GetPersonalEvents([System.Web.Http.ModelBinding.ModelBinder(typeof(WebApiDataSourceRequestModelBinder))]DataSourceRequest request)
    {
        var q = new ViewModels.Events.EventViewModel();
        q.Id = 1;
        q.Title = "This is a test";
        q.Start = DateTime.Now;
        q.End = DateTime.Now.AddHours(1);
        q.Description = "Test entry";

        var list = new List<ViewModels.Events.EventViewModel>();
        list.Add(q);
        return list.ToDataSourceResult(request);
    }

El Programador de Kendo no mostraba nada en el calendario. Usando Fiddler, pude ver que Kendo Scheduler estaba llamando a mi API y mi API estaba devolviendo datos. Aquí se envía el JSON:

{  
   "data":[  
      {  
         "id":1,
         "title":"This is a test",
         "description":"Test entry",
         "isAllDay":false,
         "start":"2016-11-18T15:31:33.1173519-08:00",
         "end":"2016-11-18T16:31:33.1178524-08:00",
         "startTimezone":null,
         "endTimezone":null,
         "recurrenceRule":null,
         "recurrenceException":null
      }
   ],
   "total":1,
   "aggregateResults":null,
   "errors":null
}

Todo parecía estar funcionando bien. Tras una investigación más profunda, finalmente descubrí mi problema. En miglobal.asax.cs archivo tengo estas líneas:

HttpConfiguration config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.Formatters.JsonFormatter.UseDataContractJsonSerializer = false;

Lo que esto hace es que hace que JSON.Net convierta automáticamente los nombres de C # a nombres compatibles con Javascript (p. Ej.Title se conviertetitle, Description se conviertedescription, etc ...), que es lo que quiero. Sin embargo, Kendo, aparentemente, requiere que los nombres sean como C # (p. Ej.Title en lugar detitle) Verifiqué esto comentando esas tres líneas en miglobal.asax.cs archivo y todo funcionó bien.

Entonces, volví mi atención a mi ViewModel. Decoré mis propiedades con elJsonProperty atributo, especificando un nombre específico. Sin embargo, todavía se está serializando como nombres en minúsculas. Aquí está el código del modelo de vista:

public class EventViewModel : ISchedulerEvent
{
    [JsonProperty(PropertyName = "Id")]
    public int Id { get; set; }

    [JsonProperty(PropertyName = "Title")]
    public string Title { get; set; }

    [JsonProperty(PropertyName = "Description")]
    public string Description { get; set; }

    [JsonProperty(PropertyName = "IsAllDay")]
    public bool IsAllDay { get; set; }

    [JsonProperty(PropertyName = "Start")]
    public DateTime Start { get; set; }

    [JsonProperty(PropertyName = "End")]
    public DateTime End { get; set; }

    [JsonProperty(PropertyName = "StartTimezone")]
    public string StartTimezone { get; set; }

    [JsonProperty(PropertyName = "EndTimezone")]
    public string EndTimezone { get; set; }

    [JsonProperty(PropertyName = "RecurrenceRule")]
    public string RecurrenceRule { get; set; }

    [JsonProperty(PropertyName = "RecurrenceException")]
    public string RecurrenceException { get; set; }
}

Así que ahora estoy sin ideas. Entonces, ¿hay alguna manera de hacer que Json.Net serialice mis nombres correctamente SOLO para este método o hay algún otro atributo que pueda usar en mi modelo de vista para que los nombres se serialicen correctamente o hay una configuración en Kendo que permitiría a Kendo usar el formato de caja de camello?

Respuestas a la pregunta(1)

Su respuesta a la pregunta