Поскольку я новичок в ASP.NET MVC, кто-нибудь может сказать мне разницу между return RedirectToAction()
и return View()
?
Разница между redirectToAction() и View()
Ответ 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.