<li>@Html.ActionLink("Contact Us", "Contact", "Home")</li>
<li><a href="#">Services</a>
<ul>
<li>@Html.ActionLink("IT", "IT", "Home")
<ul>//Dropdown
<li>@Html.ActionLink("Data Backup", "DataBackup", "Home")</li>
</ul>
</li>
例如,这是我的菜单,我的css类是&#34;选择&#34;对于活动链接..我想以最简单的方式使用它。任何人都可以帮助我获得MVC4 ..我已经看过一些解决方案,但是没有太多的知识可以使用它..
答案 0 :(得分:0)
<ul class="@{booleanForThisIsSelected ? "selected" : "";}">//Dropdown
答案 1 :(得分:0)
我一直使用以下技术,使用jQuery
<script type="text/javascript">
var currentLocation = window.location;
$(function () {
$('.menu li a').each(function () {
if (this.href == currentLocation) {
$(this).parent().addClass("current");
}
});
});
</script>
此块首先获取当前页面url,然后获取所有菜单锚点并将每个菜单锚点与当前页面url进行比较,一旦找到匹配项,它会为匹配锚点提供一个特殊类current
,应指明当前页面链接。
请注意,选择器$('.menu li a')
应该更改以匹配您自己的结构,以便正确获取菜单项。
希望这会有所帮助,如果您还有其他需要,请告诉我。
答案 2 :(得分:0)
我建议您使用MvcSiteMapProvider MVC4。
您安装nuget包。
然后根据您的站点结构将链接添加到Mvc.Sitemap文件中。 现在,您应该可以使用 MenuHelperModel.cshtml -file来定义站点地图中所有链接的呈现行为(包括当前选定的链接),这样的示例可能如下所示:
@model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel
@using System.Web.Mvc.Html
@using MvcSiteMapProvider.Web.Html.Models
<ul id="menu">
@foreach (var node in Model.Nodes) {
string classes = node.IsCurrentNode | node.IsInCurrentPath | node.Children.Any(n => n.IsCurrentNode)
? "selected" : "";
<li class="@classes">@Html.DisplayFor(m => node)
@if (node.Children.Any()) {
@Html.DisplayFor(m => node.Children)
}
</li>
}
</ul>
您现在要做的就是确保您的链接显示在您的页面上,最佳位置应该是您的布局/母版页。
你可以在那里添加一个对
的调用@Html.MvcSiteMap("MvcSiteMapProvider").Menu(0, true, false, 1)
它只呈现站点地图的第一级。
如果您想要使用此更详细的示例,可以查看我的question here。 但请记住,使用现在过时的MvcSiteMapProvider - Package,因此MenuHelperModel.cshtml中会有轻微的语法更改。