MvcSiteMap генерирует меню без испорчения сухарей

Я настраиваю приложение asp.net mvc 5 для использования библиотеки MvcSiteMap. Таким образом, далеко я мог бы успешно настроить хлебные кролики.
Тем не менее, шаблон для меню довольно сложнее, чем сухарики. У меня есть версия уса в меню (я не показывал тег ul):

  • class}}>{{! print class name (active, open, etc) if it exists }} submenu?}}> {{#icon}}{{/icon}} {{#level-1}} {{/level-1}} {{#level-2}}{{! if level-2 and no icon assigned, use this icon}} {{^icon}}{{/icon}} {{/level-2}} {{title}} {{#badge}} tooltip}}>{{{badge}}} {{/badge}} {{#label}} label-title}}>{{{label}}} {{/label}} {{#level-1}} {{/level-1}} {{#submenu?}}{{/submenu?}} {{#submenu?}}{{! if we have submenu items, print them recursively }} {{/submenu?}}
  • Таким образом, для каждого узла это логика для применения. Мне нужно знать, имеет ли узел подузлы (подменю), если это узел уровня 1 или уровня 2.
    1) Как я могу это знать?
    2) Если мне нужно изменить SiteMapNodeModel.cshtml, который, я думаю, мне нужно изменить, как не путать с сухарями, так как они используют один и тот же шаблон?

    One Solution collect form web for “MvcSiteMap генерирует меню без испорчения сухарей”

    Создайте шаблон для MenuHelperModel и MenuHelperModel ему собственное имя и поместите его в папку /Views/Shared/DisplayTemplates/ . Затем вы можете создать шаблон для SiteMapNodeModel и SiteMapNodeModelList и предоставить им собственные имена. Скопируйте содержимое MenuHelperModel.cshtml , SiteMapNodeModel.cshtml и SiteMapNodeModelList.cshtml в свои новые настраиваемые помощники.

    Затем измените переопределения в каждом из HTML-помощников в шаблонах, чтобы они вызывали пользовательские шаблоны вместо встроенных шаблонов.

     // MyMenu.cshtml @* // This template is for the root level *@ @model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel @using System.Web.Mvc.Html @using MvcSiteMapProvider.Web.Html.Models  // MyMenuNodeList.cshtml @* // This template is for the descendent lists below the root level *@ @model MvcSiteMapProvider.Web.Html.Models.SiteMapNodeModelList @using System.Web.Mvc.Html @using MvcSiteMapProvider.Web.Html.Models 
      @foreach (var node in Model) {
    • @Html.DisplayFor(m => node, "MyMenuNode") @* < -- // Custom Node Helper Name *@ @if (node.Children.Any()) { @Html.DisplayFor(m => node.Children, "MyMenuNodeList") @* < -- // Custom Node Helper Name *@ }
    • }
    // MyMenuNode.cshtml @* // This template is for the node *@ @model MvcSiteMapProvider.Web.Html.Models.SiteMapNodeModel @using System.Web.Mvc.Html @using MvcSiteMapProvider.Web.Html.Models Testing @* < -- // If configured right, Testing will appear before every node *@ @if (Model.IsCurrentNode && Model.SourceMetadata["HtmlHelper"].ToString() != "MvcSiteMapProvider.Web.Html.MenuHelper") { @Model.Title } else if (Model.IsClickable) { if (string.IsNullOrEmpty(Model.Description)) { @Model.Title } else { @Model.Title } } else { @Model.Title }

    Затем вызовите ваш корневой шаблон из меню.

     @Html.MvcSiteMap().Menu("MyMenu") 

    Вы можете использовать это как отправную точку, а затем внести изменения в представления для вывода желаемого HTML.

    Обратите внимание, что шаблон SiteMapNodeListHelperMySiteMapNodeList » в этом случае) рекурсивно вызывает себя для каждого последующего уровня узлов.

    Interesting Posts

    IIS Express Немедленное завершение работы сайта после остановки веб-приложения

    Java – удаление строки из текстового файла путем перезаписи при чтении

    Как скомпилировать для Win XP с Visual Studio 2012?

    Что написано на стороне «ключа тайны» на клавиатуре IBM PC 3180?

    Сравнение агрегации MongoDB: group (), $ group и MapReduce

    Ubuntu загружается в busybox, пробовал одно из следующих, но не работал

    Какой бесплатный инструмент для редактирования видео можно использовать в Windows, чтобы разрезать файл mp4?

    Почему ++ считается l-значением, но i ++ – нет?

    Как «while (* s ++ = * t ++)» скопировать строку?

    Настройки поиска в Firefox

    Возврат из блока finally в Java

    Как читать параметры командной строки из R-скрипта?

    Macbook Pro – звук не работает, и из моего наушника появляется красный свет

    Выполнение стартовых заданий как непривилегированных пользователей

    Как добавить фигуры на JavaFX LineChart

    Давайте будем гением компьютера.