MVC4当前链接?

时间:2014-03-23 12:56:52

标签: css asp.net-mvc

<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 ..我已经看过一些解决方案,但是没有太多的知识可以使用它..

3 个答案:

答案 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中会有轻微的语法更改。