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

Разница между redirectToAction() и View()

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

4b9b3361

Ответ 1

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

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

Пример...

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

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

Ответ 2

  • Возврат View не создает новые запросы, он просто отображает представление без изменения URL-адресов в адресной строке браузера.
  • Возврат RedirectToAction делает новый запрос и URL-адрес в браузере адресная строка обновляется сгенерированным URL-адресом с помощью MVC.
  • Возврат Redirect также делает новый запрос и URL-адрес в адресе браузера бар обновляется, но вы должны указать полный URL.
  • RedirectToRoute перенаправляет на указанный маршрут, определенный в таблица маршрутов.

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

Ответ 3

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

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

Ответ 4

здесь - самое простое объяснение представления рендеринга в mvc.