ViewResult или ActionResult |имеет ли смысл использовать ViewResult, если ActionResult в любом случае хорош для всего? - PullRequest
13 голосов
/ 20 марта 2010

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

Ответы [ 5 ]

12 голосов
/ 20 марта 2010

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

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

6 голосов
/ 06 октября 2011

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

4 голосов
/ 21 марта 2010

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

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

0 голосов
/ 26 мая 2011

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

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

0 голосов
/ 16 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...