@Response.Redirect("~/Account/LogIn?returnUrl=Products");
Как я могу перенаправить из своего текущего вида в другое представление?
@Response.Redirect("~/Account/LogIn?returnUrl=Products");
Как я могу перенаправить из своего текущего вида в другое представление?
Это потому, что ваш оператор не выводит результат.
Помимо всех предупреждений Дарина и ленивых (они правы); вопрос все еще предлагает чему-то, чему нужно научиться.
Если вы хотите выполнять методы, которые напрямую не производят вывод, вы делаете:
@{ Response.Redirect("~/Account/LogIn?returnUrl=Products");}
Это также относится к частичным частям:
@{ Html.RenderPartial("_MyPartial"); }
Это не то, как предполагается использовать ASP.NET MVC. Вы не перенаправляете из представлений. Вы перенаправляетесь из соответствующего действия контроллера:
public ActionResult SomeAction()
{
...
return RedirectToAction("SomeAction", "SomeController");
}
Теперь, когда я вижу, что в вашем примере вы пытаетесь перенаправить действие LogOn
, вам действительно не нужно делать это перенаправление вручную, а просто украсить действие контроллера, требующее аутентификации с помощью атрибута [Authorize]
[Authorize]
public ActionResult SomeProtectedAction()
{
...
}
Теперь, когда какой-то анонимный пользователь пытается получить доступ к этому действию контроллера, модуль проверки подлинности форм автоматически перехватит запрос задолго до того, как он ударит действие и перенаправит пользователя на действие LogOn, указанное вами в вашем web.config(loginUrl
).
Цель просмотра - отображать модель. Вы должны использовать контроллер для перенаправления запроса, прежде чем создавать модель и передавать ее для просмотра. Используйте Controller.RedirectToAction метод для этого.