在Asp.NET MVC中突出显示的导航菜单?

Duc*_*tal 10 asp.net-mvc menu

这是一个简单的问题.stackoverflow如何在Asp.net MVC中执行他们的菜单,并突出显示我们所在的页面.

Duc*_*tal 3

为此,我写了一些代码,其中有些部分使用我的自定义扩展(例如语言),继续使用它,只需忽略次要部分。

我将其放置在包含用于获取操作和控制器的菜单的部分之上,以便我可以将其传递给扩展。

<%  string currentAction = ViewContext.RouteData.Values["action"].ToString();
    string currentController = ViewContext.RouteData.Values["controller"].ToString(); %>
Run Code Online (Sandbox Code Playgroud)

这是侧边栏项目,基本上这将生成一个带有链接的“li”标签和您的自定义类,以指示该链接当前是否在页面/突出显示中使用。

public static string SidebarItem(this System.Web.Mvc.HtmlHelper html, string currentAction, string currentController, string action, string controller, string languageKey, params object[] args)
{
    TagBuilder tb = new TagBuilder("li");
    if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) && string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase))
    {
        tb.GenerateId("activemenu");
    }
    string text = html.Language(languageKey, args);
    string link = html.ActionLink(text, action, controller).ToHtmlString();
    tb.SetInnerText("{0}");
    return String.Format(tb.ToString(), "<span>"+link+"</span>");
}
Run Code Online (Sandbox Code Playgroud)

这是上面代码的实际用法

<%= Html.SidebarItem(currentAction, currentController, "index", "home", "index") %>
Run Code Online (Sandbox Code Playgroud)