Post / Redirect / Get: перенаправление на определенный маршрут - PullRequest
1 голос
/ 02 февраля 2009

У меня есть следующий сценарий:

У меня есть страница редактирования, которую можно вызывать с разных страниц. Эти страницы могут быть подробным представлением для текущей сущности или представлением списка для сущностей (с поиском по маршруту или без него).

КАК мне точно перенаправить на исходную страницу вызова с помощью инфраструктуры MVC? Конечно, я мог бы просто передать значение HttpContext.Request.Url, удерживая его в моих TempData, но этот запах пахнет в моих глазах (или, ошибаться, нос). Он находится на более низком уровне, чем остальная часть кода.

Есть ли способ получить значения маршрута для предыдущей страницы в контексте контроллера? Если бы у меня было это, я мог бы временно сохранить это и передать это перенаправлению.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2009

Не используйте TempData, когда не перенаправляете. Один AJAX-запрос со страницы редактирования, и TempData исчезнет.

Томас прав, что скрытый элемент или параметр строки запроса - это путь. Но убедитесь, что вы дезинфицируете представленное значение. Вы не хотите перенаправлять старый сайт в Интернете; Вы должны убедиться, что страница, на которую вы перенаправляете, является частью ваших сайтов.

1 голос
/ 02 февраля 2009

у вас всегда может быть скрытый элемент формы, сообщающий контроллеру, куда перенаправлять при публикации формы. при использовании запроса get вы можете использовать строку запроса аналогичным образом. Возможно, это не самое красивое решение, но оно намного безопаснее, чем доверять httpreferrer или другим заголовкам, которые могут быть легко изменены (или опущены) браузером.

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