(Ответ, первоначально отправленный для этот вопрос .)
При использовании MVC один из способов справиться с этим - реализовать базовый контроллер, в котором вы переопределяете (скрываете) метод Json (объект) следующим образом:
public class ExtendedController : Controller
{
protected new JsonResult Json(object data)
{
if (!Request.AcceptTypes.Contains("application/json"))
return base.Json(data, "text/plain");
else
return base.Json(data);
}
}
Теперь все ваши контроллеры могут наследовать ExtendedController и просто вызывать return Json(model);
...
- без изменения типа содержимого ответа для тех браузеров, которые хорошо воспроизводятся (не <= IE9!) </li>
- без необходимости использовать
Json(data, "text/plain")
в различных методах действий Ajax
Это работает с запросами json, которые в противном случае отображали бы сообщение «Открыть или сохранить» в IE8 и IE9, например, сделанные Загрузка файла jQuery