32

嗨,我正在尝试从一个视图重定向到另一个视图,但在 Visual Studio 中出现红色波浪。如何从视图内部重定向到另一个视图。这是我尝试过的,但它不起作用:

@Response.Redirect("~/Account/LogIn?returnUrl=Products");

如何从当前视图重定向到另一个视图?

4

3 回答 3

42

这是因为您的语句不会产生输出。

除了达林和懒惰的所有警告(他们是对的);这个问题仍然提供了一些要学习的东西。

如果要执行不直接产生输出的方法,请执行以下操作:

@{ Response.Redirect("~/Account/LogIn?returnUrl=Products");}

这也适用于渲染局部,例如:

@{ Html.RenderPartial("_MyPartial"); }
于 2012-12-29T10:00:10.933 回答
18

这不是应该使用 ASP.NET MVC 的方式。您不会从视图重定向。您从相应的控制器操作重定向:

public ActionResult SomeAction()
{
    ...
    return RedirectToAction("SomeAction", "SomeController");
}

现在,由于我在您的示例中看到您正在尝试重定向到LogOn操作,因此您实际上并不需要手动执行此重定向,而只需使用[Authorize]属性装饰需要身份验证的控制器操作:

[Authorize]
public ActionResult SomeProtectedAction()
{
    ...
}

现在,当某些匿名用户尝试访问此控制器操作时,表单身份验证模块将在请求触发该操作之前自动拦截该请求,并将用户重定向到您在 web.config ( loginUrl) 中指定的 LogOn 操作。

于 2012-12-29T09:57:04.953 回答
1

视图的目的是显示模型。在创建模型并将其传递给视图之前,您应该使用控制器重定向请求。为此使用Controller.RedirectToAction方法。

于 2012-12-29T09:56:49.547 回答