嗨,我正在尝试从一个视图重定向到另一个视图,但在 Visual Studio 中出现红色波浪。如何从视图内部重定向到另一个视图。这是我尝试过的,但它不起作用:
@Response.Redirect("~/Account/LogIn?returnUrl=Products");
如何从当前视图重定向到另一个视图?
嗨,我正在尝试从一个视图重定向到另一个视图,但在 Visual Studio 中出现红色波浪。如何从视图内部重定向到另一个视图。这是我尝试过的,但它不起作用:
@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()
{
...
}
现在,当某些匿名用户尝试访问此控制器操作时,表单身份验证模块将在请求触发该操作之前自动拦截该请求,并将用户重定向到您在 web.config ( loginUrl
) 中指定的 LogOn 操作。
视图的目的是显示模型。在创建模型并将其传递给视图之前,您应该使用控制器重定向请求。为此使用Controller.RedirectToAction方法。