Недавно я обнаружил странный сценарий, пытаясь переопределить метод Json класса Controller, чтобы использовать JSON.net. Он отлично работает, если в конце я возвращаю объект ContentResult и повышаю его до ActionResult. Однако это не сработает, если я попытаюсь вернуть объект JSONResult.Почему возвращение JSONResult из переопределенного метода Json не работает и ContentResult работает?
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;
}
Есть ли какие-либо объяснения для этого?
Почему нет? Что происходит? – SLaks