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