Навигационное меню с выделением в Asp.NET MVC?

Это - простой вопрос. Как сделал stackoverflow, делают их меню в Asp.net MVC, с выделением на том, какая страница мы идем.

10
задан Jeff Atwood 12 January 2010 в 00:29
поделиться

4 ответа

Для целей этого я написал какой-то код вниз, есть некоторая часть, которая использует мой пользовательский расширение, как язык, как язык, продолжайте и использовать его, просто игнорируйте небольшую часть Отказ

Это я помещу на верхнюю часть своего частичного, которая содержит меню, чтобы получить действие и контроллер, чтобы я мог пройти это к расширению.

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

Это элемент боковой панели, в основном это будет генерировать тег «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>");
}

И вот фактическое использование кода выше

<%= Html.SidebarItem(currentAction, currentController, "index", "home", "index") %>
3
ответ дан 4 December 2019 в 02:50
поделиться

Если вы посмотрите на источник страницы, они добавили класс CSS в элемент

  • , чтобы изменить цвет фона. Я предполагаю, что код смотрит на какой контроллер доступа к пользователю (вопросы, пользователям и т. Д.) и добавляет класс к этому разделу
  • тег.

  • 0
    ответ дан 4 December 2019 в 02:50
    поделиться

    См. В этом URL

    http://stackoverflow.com/questions Это указывает на то, что, вероятно, вопросы контроллер обрабатывает эту страницу. Таким образом, он изменяет View для отображения выделенного пункта меню.

    0
    ответ дан 4 December 2019 в 02:50
    поделиться

    Вероятно, нет никакой особой магии MVC, которая бы сделала это возможным.

    Я уверен:

    if( HttpContext.Current.Request.Path == "some some menu url" )
    

    или

    if( ViewContext_Or_ControllerContext.RouteData.Values["controller"] == "some value") 
    

    где-то используется.

    Можно разместить этот код примерно в трех разных местах ( View ( .aspx ), ViewModel, Custom HtmlHelper ), и все они потребуют один и тот же бит кода.

    3
    ответ дан 4 December 2019 в 02:50
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: