根据主页上的用户选择更改菜单

时间:2014-03-21 21:14:06

标签: .net asp.net-mvc asp.net-mvc-4 razor

如何显示/更改_Layout页面上的菜单(也是仅在身份验证后可见) 根据用户在主页上选择的路径?

在主页上,用户有三个路径(管理员,讲师,学生),我想根据用户选择更改菜单,如果有人选择管理员我显示不同的菜单等

在用户返回主页并更改其选择之前,菜单不应更改。 (注意:在我的代码中我有很多重定向)

3 个答案:

答案 0 :(得分:0)

这是我在类似场景中通常做的事情

1-我将以某种方式保存将指示我应该如何表现的标志(例如:session,HiddenField)。

2-构建菜单是由使用以下属性修饰的动作控制的部分视图的责任:[ChildActionOnly]

3-基于保存的标志,我将保存的值传递给子动作,让它决定如何构造菜单元素

4-因此,PartialView应该作为菜单容器,它应该接收菜单项并为用户呈现最终的HTML。

答案 1 :(得分:0)

您可以查看RouteData中的某些值。

例如,如果菜单取决于控制器(假设每个'路径'都有自己的控制器),您可以检查以下值:

@ViewContext.RouteData.Values["controller"]

_Layout

答案 2 :(得分:0)

在主页上将HttpContext项目中的选定值设置为

HttpContext.Items["Menu"]="Admin";

HttpContext.Items["Menu"]="Student";

依旧......

在视图上只需检查菜单项的值并相应显示菜单

@if(HttpContext.Current.Items["Menu"]=="Admin")
{
      Show Admin Menus
}
else if(HttpContext.Items["Menu"]=="Student")
{
      Show Student menus
}

等等.......

我希望它会帮助你......