ASP.NET MVC частичное представление и перенаправление - PullRequest
1 голос
/ 20 февраля 2009

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

Ответы [ 3 ]

5 голосов
/ 20 февраля 2009

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

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

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

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

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

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

Оба решения имеют неприятный запах кода.

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

0 голосов
/ 20 февраля 2009

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

  Return Redirect(returnUrl);

или

  Return RedirectToAction(returnUrl);

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

У меня недавно были похожие проблемы - вы могли бы найти что-то здесь ...

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