Недавно я обнаружил странный сценарий, пытаясь переопределить метод Json класса Controller, чтобы я мог использовать преобразователь контрактов JSON.net. Он отлично работает, если в конце я возвращаю объект ContentResult и передаю его в ActionResult. Однако это не сработает, если я попытаюсь вернуть объект JSONResult.
protected new ContentResult Json(object data, JsonRequestBehavior behaviour = JsonRequestBehavior.DenyGet)
{
var jsonSerializerSettings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
if (Request.RequestType == WebRequestMethods.Http.Get && behaviour == JsonRequestBehavior.DenyGet)
{
throw new InvalidOperationException("GET is not permitted for this request");
}
var jsonResult = new ContentResult
{
Content = JsonConvert.SerializeObject(data, jsonSerializerSettings),
ContentType = "application/json",
};
return jsonResult;
}
Есть ли какое-то объяснение этому?