我想这是你的网站主导航,和你想保持“选择”顶部的菜单,即使你是不是确切的动作(例如,链接进入名单,但之后你去'编辑'页面等)。
有两种方法可以做到这一点。一种方法是在viewbag中放置一个属性,然后在_layout.cshtml文件中检查它的呈现时间。
// in controller Action method
ViewBag.SelectedMenu = "first"
// in view
first link第二种方式(即我们使用)是使用Sitemap包(从安装的NuGet)。然后,您可以在根目录中编辑您的站点地图文件,并将所有链接放在那里(即使您不直接用于导航的链接)。然后,你有控制器为你呈现你的
- 's。它提供了与现在相同的HTML,很大程度上,所以CSS仍然可以工作。
在一个地方所有的菜单东西
网站地图尊重[授权]属性,或其他过滤器,隐藏登录仅链接
可以隐藏/中可能并不存在的菜单显示节点(重新映射的URL等)
很多其他不错的小功能
Mvc.sitemap文件:
,然后在你的_Layout.cshtml文件:
@Html.MvcSiteMap().Menu(0, true, true, 1)
然后修改Views\Shared\MenuHelperModel.cshtml转变作风:我li元素内
@foreach (var node in Model.Nodes)
{
var show = node.IsInCurrentPath && (!node.IsRootNode || node.IsCurrentNode);
var cls = show ? "selected" : "";
- @Html.DisplayFor(m => node)
}