ViewResult или ActionResult | имеет ли смысл использовать ViewResult, если ActionResult хорош для всего, так или иначе?

В asp.net mvc есть ViewResult для возврата View и ActionResult для возврата того, что вы хотите, так что есть ли веская причина, почему я должен использовать ViewResult вместо ActionResult, когда я уверен, что вернусь к View?

Ответы

Ответ 1

ActionResult - это общий базовый класс, в котором все остальные результаты получены из таких ViewResult, JsonResult и т.д.

Таким образом вы можете возвращать несколько типов результатов, таких как JSON и XML, из того же метода.

Ответ 2

По той же причине вы не пишете каждый метод каждого класса, чтобы вернуть "объект". Вы должны быть настолько конкретны, насколько сможете. Это особенно ценно, если вы планируете писать модульные тесты. Больше не нужно тестировать возвращаемые типы и/или выдавать результат.

Ответ 3

Вы должны использовать ViewResult, чтобы сделать код более читаемым и найти ошибки, но могут быть и другие преимущества.

Поскольку я использую шаблон POST-REDIRECT-GET, я написал несколько тестов, чтобы проверить, возвращает ли каждый метод [HttpPost] RedirectToRouteResult. Если я определяю другой тип результата в методе [HttpPost], он автоматически не проходит тест. Это не позволяет мне возвращать View (model) в методе post.

Ответ 4

Если вы хотите выполнить модульное тестирование, измените его в контроллере с ActionResult на ViewResult. Тогда у вас будет intellisense в вашем тестовом контроллере, и жизнь будет хорошей.

Ответ 5

Я просто случайно получил тот же вопрос несколько дней назад, и Google быстро помог. В принципе, здесь нет проблем с производительностью, это проблема с кодированием, если таковая имеется.

Это короткое, но полезное сообщение в блоге: http://www.techiesblog.com/post/2862100163/viewresult-vs-actionresult-asp-net-mvc