Когда вы используете View () против RedirectToAction - PullRequest
17 голосов
/ 25 апреля 2011

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

Короче говоря, у меня есть действие в контроллере, который обрабатывает форму, а затем отображает результаты обработки. Когда я должен использовать return View() вместо return RedirectToAction("FormResult")?

Ответы [ 3 ]

22 голосов
/ 25 апреля 2011

Рискну сказать, что есть жесткое и быстрое правило (а также, насколько это возможно) - шаблон Post / Redirect / Get (PRG) .Стандарт MVC (и html-помощники фактически ожидают, что вы будете использовать этот шаблон):

  1. отправьте ваши данные.
  2. Если есть ошибка (т. Е. ModelState.IsValid=false), тогда return View() в противном случае return RedirectResult.

Если произошла ошибка, HTML-помощники фактически посмотрят на опубликованные значениячтобы отобразить в противоположность тому, что вы передаете им View(model) - опять же, потому что паттерн PRG «должен» быть тем, что произошло.

9 голосов
/ 25 апреля 2011

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

Дело не в том, что есть жесткое правило.Нужно взвесить все за и против.

6 голосов
/ 16 сентября 2013
  1. Возвратное представление не создает новых запросов, оно просто отображает представление
  2. без изменения URL-адресов в адресной строке браузера.Return
    RedirectToAction отправляет новые запросы, а URL-адрес в адресной строке браузера обновляется с помощью сгенерированного URL-адреса MVC.
  3. Return Redirect также создает новые запросы и URL-адрес в адресной строке браузера обновляется, но вынеобходимо указать полный URL-адрес для перенаправления
  4. . Между RedirectToAction и Redirect лучше всего использовать RedirectToAction для всего, что связано с действиями / контроллерами приложения.Если вы используете Redirect и предоставляете URL, вам нужно будет изменить эти URL вручную при изменении таблицы маршрутов.
  5. RedirectToRoute перенаправляет на указанный маршрут, определенный в таблице Route.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...