如何在布局页面中使用模型

时间:2012-09-24 16:36:34

标签: asp.net-mvc

我正在尝试创建一个在用户登录时显示的菜单..代码是这样的:

<html>
<body>
     @if(Model.IsUserLogged){
     //some html
     }

     @RenderBody()

     @if(Model.IsUserLogged){
     //some html again
     }
</body>
</html>

但在布局页面我不能使用模型,那么,最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

如果是授权或身份验证信息,您正在寻找为什么不从请求或Cookie中读取。例如上面:

@Request.IsAuthenticated  

其他少量用户数据可以存储在cookie中并使用帮助程序读取。或者,如果您的受众浏览器可以支持,您可以在本地存储中拥有更多用户数据。

答案 1 :(得分:1)

有一种方法可以做到这一点,包括使用局部视图,尽管你需要将逻辑移到布局之外。创建一个局部视图(比如“_MyMenu”或其他),将渲染逻辑放在那里,为它创建一个控制器方法:

public PartialViewResult MenuView() {
    SomeObject model = GetSomeObject()
    return PartialView("_MyMenu", model);
}

然后在您的布局页面中,使用RenderAction

进行调用
@{Html.RenderAction("MenuView", "MyController");}

有人已经提到过如何获取用户的身份验证状态,所以我不确定这对你来说是否足够。