Разница между redirectToAction () и View () - PullRequest
21 голосов
/ 02 апреля 2011

Поскольку я новичок в ASP.NET MVC, может кто-нибудь сказать мне разницу между return RedirectToAction() и return View()?

Ответы [ 3 ]

21 голосов
/ 02 апреля 2011

return View() говорит MVC сгенерировать HTML для отображения и отправляет его в браузер.

RedirectToAction() говорит ASP.NET MVC ответить перенаправлением браузера на другойдействие вместо рендеринга HTML.Браузер получит уведомление о перенаправлении и сделает еще один запрос на новое действие.

Пример ...

Допустим, вы создаете форму для сбора и сохранения данных, ваш URL выглядит такSomeEntity/Edit/23.В действии Edit вы выполните return View(), чтобы отобразить форму с полями ввода для сбора данных.

Для этого примера, скажем, что при успешном сохранении данных вы хотите отобразить данные, которые были сохранены,После обработки предоставленных пользователем данных, если вы делаете что-то вроде RedirectToAction("Index"), где Index - это действие, которое будет отображать данные.Браузер получит HTTP 302 (временное перенаправление) для перехода на /SomeEntity/Index/23.

11 голосов
/ 16 сентября 2013
  1. Return View не делает новых запросов, он просто отображает представление без изменения URL в адресной строке браузера.
  2. Return RedirectToAction делает новый запрос и URL в браузере адресная строка обновлена ​​сгенерированным URL-адресом MVC.
  3. Return Redirect также делает новый запрос и URL в адрес браузера панель обновлена, но вы должны указать полный URL.
  4. RedirectToRoute перенаправляет на указанный маршрут, определенный в таблица маршрутов.

Между RedirectToAction и Redirect рекомендуется использовать RedirectToAction за все, что связано с вашим приложением действия / контроллеры. Если вы используете Redirect и предоставите URL, вы необходимо изменить эти URL-адреса вручную при изменении таблицы маршрутов.

0 голосов
/ 23 июля 2017

В качестве дополнения ко всем ответам выше, если вы используете реализацию проверки с использованием аннотации данных, используйте return View() вместо RedirectToAction().

Сообщение проверки не будет работать с использованием RedirectToAction, так как оно не получит недопустимую модель и ваше сообщение проверки не будет отображаться также в вашем представлении.

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