如何显示/更改_Layout页面上的菜单(也是仅在身份验证后可见) 根据用户在主页上选择的路径?
在主页上,用户有三个路径(管理员,讲师,学生),我想根据用户选择更改菜单,如果有人选择管理员我显示不同的菜单等
在用户返回主页并更改其选择之前,菜单不应更改。 (注意:在我的代码中我有很多重定向)
答案 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
}
等等.......
我希望它会帮助你......