1

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

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

     @RenderBody()

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

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

4

2 回答 2

1

如果您要查找的是授权或身份验证信息,为什么不从请求或 cookie 中读取。例如上面:

@Request.IsAuthenticated  

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

于 2012-09-24T16:45:16.287 回答
1

有一种方法可以使用局部视图,尽管您需要将逻辑移到那里并移出布局。创建一个局部视图(例如“_MyMenu”或其他),将您的渲染逻辑放在那里,为其创建一个控制器方法:

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

然后在您的布局页面中,使用以下命令调用它RenderAction

@{Html.RenderAction("MenuView", "MyController");}

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

于 2012-09-24T17:04:49.710 回答