Вопрос

Я работаю над приложением ASP.NET MVC и наткнулся на странную вещь.

У меня есть два таких действия контроллера:

родовое слово

Сначала я вызываю действие Review с параметром null, это вызовет веб-страницу со списком элементов.Элементы связаны обратно с первым действием Review с установленным идентификатором.

После предоставления идентификатора действию проверки для этого элемента будет возвращена веб-страница редактирования.При нажатии кнопки «Отправить» после некоторых изменений мы перейдем ко второму действию «Обзор» (публикации).Здесь элемент будет сохранен.

Пока все в порядке.

Теперь, в последнем действии проверки (записи) я получил следующий код в конце:

родовое слово

Это снова запустит первое действие "Просмотр". Проблема в том, что оно предоставит предыдущий идентификатор?Я думал, что RedirectToAction не будет предоставлять никаких параметров?

Это было полезно?

Решение

<цитата>

Я думал, что RedirectToAction не будет предоставлять никаких параметров?

Вы неправильно поняли.Параметры, присутствующие в состоянии модели, автоматически перенаправляются, если целевой URL-адрес содержит параметр маршрута с тем же именем.В этом случае у вас есть параметр id, который публикуется (возможно, как часть поля ввода или часть URL-адреса) и когда вы перенаправляете обратно к исходному действию Index, потому что определения ваших маршрутов имеют токен id в конце RedirectToActionметод заполнит его.

В качестве обходного пути, чтобы избежать такого поведения, вы можете явно указать, что параметр id не должен отправляться при перенаправлении:

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top