我正在尝试创建一个在用户登录时显示的菜单。代码是这样的:
<html>
<body>
@if(Model.IsUserLogged){
//some html
}
@RenderBody()
@if(Model.IsUserLogged){
//some html again
}
</body>
</html>
但是在布局页面中我不能使用模型,那么,最好的方法是什么?
我正在尝试创建一个在用户登录时显示的菜单。代码是这样的:
<html>
<body>
@if(Model.IsUserLogged){
//some html
}
@RenderBody()
@if(Model.IsUserLogged){
//some html again
}
</body>
</html>
但是在布局页面中我不能使用模型,那么,最好的方法是什么?
如果您要查找的是授权或身份验证信息,为什么不从请求或 cookie 中读取。例如上面:
@Request.IsAuthenticated
其他少量用户数据可以存储在 cookie 中并使用帮助程序读取。或者,如果您的受众浏览器支持,您可以在本地存储中拥有更多用户数据。
有一种方法可以使用局部视图,尽管您需要将逻辑移到那里并移出布局。创建一个局部视图(例如“_MyMenu”或其他),将您的渲染逻辑放在那里,为其创建一个控制器方法:
public PartialViewResult MenuView() {
SomeObject model = GetSomeObject()
return PartialView("_MyMenu", model);
}
然后在您的布局页面中,使用以下命令调用它RenderAction
:
@{Html.RenderAction("MenuView", "MyController");}
有人已经提到如何获取用户的身份验证状态,所以我不确定这对你来说是否足够。