从视图重定向到另一个视图

Nis*_*dru 29 asp.net-mvc asp.net-mvc-3

嗨我想从一个视图重定向到一个不同的视图,但我在视觉工作室得到一个红色的squigly.如何从视图内部重定向到另一个视图.这是我尝试但它不起作用:

@Response.Redirect("~/Account/LogIn?returnUrl=Products");
Run Code Online (Sandbox Code Playgroud)

如何从我的视图重定向到另一个视图?

NKC*_*CSS 38

这是因为你的陈述没有产生输出.

除了达林和懒惰的所有警告(他们是对的); 这个问题仍然值得学习.

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

@{ Response.Redirect("~/Account/LogIn?returnUrl=Products");}
Run Code Online (Sandbox Code Playgroud)

对于渲染部分内容也是如此:

@{ Html.RenderPartial("_MyPartial"); }
Run Code Online (Sandbox Code Playgroud)

  • 谢谢回答.有时在视图中重定向是有正当理由的,例如,当没有与视图关联的控制器时.就我而言,我有一些MVC页面以及一些传统的经典asp页面.对默认.asp文档的请求(例如domain.com/somefolder)将被解释为MVC请求而不是.asp.在摆弄了默认路由并且忽略了一段时间后没有结果我得出结论最简单的方法是在domain.com/somefolder上创建一个MVC页面并重定向到asp页面. (2认同)

Dar*_*rov 15

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

public ActionResult SomeAction()
{
    ...
    return RedirectToAction("SomeAction", "SomeController");
}
Run Code Online (Sandbox Code Playgroud)

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

[Authorize]
public ActionResult SomeProtectedAction()
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

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