Я изучаю сертификат MS (70-515).
Я смущен тем, что я нашел в Интернете, и тем, что я прочитал на практическом испытании.
Несколько вопросов о состоянии SO, которые используют RedirectToAction, отправляют браузеру 302, что приводит к изменению URL-адреса в адресной строке.
Но это вопрос из 1 практических тестов:
ВОПРОС:
На главном контроллере MVC в настоящее время действует только действие индекса по умолчанию. Соответствующий код показан в следующем примере кода.
public ActionResult Index()
{
ViewData["Message"] = "Hello!";
return View();
}
Вам нужно создать действие с именем FindID, которое отображает параметр ID, введенный как часть пути. Если путь не включает параметр ID, ASP.NET должен обработать действие индекса без изменения URL-адреса в адресной строке браузера и не должен генерировать исключение. Какой сегмент кода вы должны использовать?
ИСПРАВЛЯЕМЫЙ ОТВЕТ:
public ActionResult FindID(int? id)
{
if (!id.HasValue)
return RedirectToAction("Index");
ViewData["Message"] = "ID is " + id.ToString();
return View();
}
ОБЪЯСНЕНИЕ:
Вы можете использовать форму RedirectToAction ActionResult, чтобы заставить MVC обрабатывать другое действие из действия. MVC отказывается от текущего действия и обрабатывает запрос так, как будто маршрут привел непосредственно к действию, к которому вы перенаправляете. По сути, это эквивалентно вызову Server.Transfer в стандартном приложении ASP.NET.
Redirect ActionResult отправляет ответ "HTTP Error 302 - Found" в браузер, что заставляет браузер загружать указанный URL. Это изменяет адрес, который появляется в адресной строке.
Итак:
- Удаляет ли RedirectToAction URL-адрес в браузере нетронутым?
- Изменяет ли перенаправление URL-адрес в браузере?
- Правильно ли объяснение практического теста? Из этого я понимаю, что RedirectToAction НЕ делает 302.