我的一个视图中的代码如下所示,如果您已登录,它会显示欢迎通知,如果您未登录,则会显示指向登录页面的链接。
<%
if (!Request.IsAuthenticated)
{
%>
<%= Html.ActionLink("Log On", "LogOn", "Account")%>
<%
}
else
{
%>
<img src="../images/newspic.gif" width="423" height="194"><br /><br />
<%
}
%>
我想要的是,如果您没有登录,我希望它能够自动重定向到登录页面(为什么要有额外的步骤)
关于如何从上面的视图中自动重定向到另一个页面的任何建议。
答案 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(...);
如果您只想使用普通网址。