2009-02-19 3 views
1

У меня есть частичный вид под названием Login.ascx, в котором есть мои поля ввода, которые я включаю на нескольких страницах на моем сайте. Он отлично работает, когда информация верна, но я пытаюсь сделать проверку, поэтому, если информация для входа неверна, я хочу перенаправить пользователя обратно в представление, в котором они были, прежде чем показывать им ошибки входа. Каков правильный способ сказать, вернуться к представлению, из которого вы пришли?ASP.NET MVC частичные представления и перенаправление

ответ

2

Похоже, вместо того, чтобы спрашивать, как я это делаю, вы должны спрашивать себя, ПОЧЕМУ Я делаю это так. Возможно, это дизайнерское решение, а не технический вопрос.

Хотя, если вы действительно собираетесь иметь один контроллер действия для нескольких страниц входа в систему, вы можете попробовать ...

return Redirect(Request.UrlReferrer.ToString()); 

Или сохранить название маршрута в TempData и просто использовать RedirectToRoute (TempData [ "LoginRoute «]);

Оба варианта имеют плохой запах кода.

Обратите внимание, что если вы не проверяете кросс-сайтные инъекции, которые будут возвращаться на другой сайт. Вы можете выполнить некоторую проверку правильного URL-адреса.

0

Для встроенного в Login способе AccountController есть параметр с именем returnUrl, который можно использовать следующим образом:

Return Redirect(returnUrl); 

или

Return RedirectToAction(returnUrl); 

, если указан параметр returnUrl в виде действительный actionlink.

Недавно я имел аналогичные проблемы - вы могли бы найти что-то here ...

+0

Проблема с этим, если вы вернетесь из-за ошибки проверки, параметр returnUrl исчез. –

5

Если Логин не может с любой страницы, я думаю, я бы направить их на вид входа в систему для ошибок вместо предыдущего стр. У выделенной страницы входа, вероятно, будет больше пространства пользовательского интерфейса, чтобы отображать ошибки и т. Д., Чем элемент управления на другой странице. Сказав это, вы можете включить параметр returnUrl в действие «Вход», чтобы при успешном входе в систему пользователь был направлен обратно туда, где они были (или пытались добраться).

Смежные вопросы