Подтвердить что ты не робот

Actionresult против JSONresult

У меня есть 2 вопроса:

  • В чем разница между JSONResult и ActionResult?

  • Когда использовать JSONResult в MVC?

4b9b3361

Ответ 1

ActionResult - абстрактный класс, возвращающий действие.

Вспомогательные методы в Controller (например, Json(), Content(), View(),...) возвращают разные конкретные классы, наследующие ActionResult, включая JsonResult.

Вы должны объявить свои методы действий возвратом ActionResult, чтобы они имели возможность возвращать какой-либо конкретный класс результатов.

Ответ 2

Используйте JsonResult, когда вы хотите вернуть сырые данные JSON, которые будут потребляться клиентом (javascript на веб-странице или мобильный клиент).

Используйте ActionResult, если вы хотите вернуть представление, перенаправление и т.д., которое будет обрабатываться браузером.

Ответ 3

ActionResult является абстрактным классом. JsonResult является подтипом ActionResult. Таким образом, мы можем вернуть содержимое json в обоих типах.

Ответ 4

В соответствии с документацией MSDN для ActionResult:

Класс ActionResult Инкапсулирует результат действия метода и используется для выполнения операции на уровне каркаса от имени действия Метод.

Метод действия реагирует на ввод пользователя, выполняя работу и возвращая результат действия. Результат действия представляет собой команду, которая структура будет выполняться от имени метода действия. Класс ActionResult является базовым классом для результатов действий

И для JsonResult:

Представляет класс, который используется для отправки содержимого в формате JSON в формат Ответ.

Ответ 5

JsonResult

Это немного сложнее, но все же не очень. Он также имеет hardcoded его ContentType, но что делает его немного сложнее, что он использует hardcoded JavaScriptSerializer для сериализации JSON данных, прежде чем записывать их непосредственно в ответ.

Этот пост может быть полезен
http://brendan.enrick.com/post/types-of-aspnet-mvc-3-action-results.aspx