asp.net-mvc根据条件重定向到新页面

时间:2009-07-22 17:09:49

标签: asp.net-mvc

我的一个视图中的代码如下所示,如果您已登录,它会显示欢迎通知,如果您未登录,则会显示指向登录页面的链接。

    <%
        if (!Request.IsAuthenticated)
        {
    %>
    <%= Html.ActionLink("Log On", "LogOn", "Account")%>
<%
    }
        else
        {
            %>
             <img src="../images/newspic.gif" width="423" height="194"><br /><br />
<%
        }
%>

我想要的是,如果您没有登录,我希望它能够自动重定向到登录页面(为什么要有额外的步骤)

关于如何从上面的视图中自动重定向到另一个页面的任何建议。

3 个答案:

答案 0 :(得分:6)

您的视图应仅负责显示您的数据。您的控制器应该处理重定向逻辑。

已为此目的创建了授权属性。将其添加到控制器操作方法,如:

public class CustomerController : Controller {

  [Authorize]
  public ActionResult Home() {
    return View("Home");
  }

}

或者可以将其添加到Controller以应用于所有操作:

[Authorize]
public class CustomerController : Controller {

  public ActionResult Home() {
    return View("Home");
  }

}

然后在你的web.config中设置类似

的内容
<authentication mode="Forms">
   <forms loginUrl="~/Login" />
</authentication>

如果用户获得授权,他们将显示“主页”视图。如果他们未获得授权,他们将被重定向到'/ Login'

答案 1 :(得分:2)

不要重新发明轮子。 AuthorizeAttribute已经这样做了。只需在方法上方添加[授权]。

答案 2 :(得分:0)

这是程序逻辑,所以它应该在控制器中,而不是视图中。

而不是return View();尝试return RedirectToAction(...);以一种漂亮的“MVC”方式传递给另一个带有参数的控制器/动作, 或return Redirect(...);如果您只想使用普通网址。