0

Я использую MvcSiteMapProvider для создания простой панировки. У меня небольшая проблема, которую я не могу решить. Предположим, что мой веб-сайт содержит пять вкладок: «Главная», «Клиент», «Компания», «Отчеты» и «О них» (это вкладки верхнего уровня).Как скрыть уровень корня при использовании MvcSiteMapProvider?

Когда пользователь просматривает страницу В начало, я не хочу, чтобы пачка появлялась. Однако, когда пользователь находится на странице «Клиент», Breadcrumb должен отображать «Главная» (и то же самое относится к остальным вкладкам верхнего уровня - кроме «Домой», конечно). И для следующего уровня, предполагая, что пользователь нажал ссылку «Информация о клиенте» на странице «Клиент», в палитре «На главную/Клиент» должна отображаться «Главная/Клиент». Таким образом, верхний уровень опущен.

Как это сделать? Любая помощь высоко ценится! :)

ответ

4

Самый простой способ - только отредактировать файл шаблона SiteMapPathHelperModel.cshtml в каталоге /Views/Shared/DisplayTemplates/.

@model MvcSiteMapProvider.Web.Html.Models.SiteMapPathHelperModel 
@using System.Web.Mvc.Html 
@using System.Linq 
@using MvcSiteMapProvider.Web.Html.Models 

@foreach (var node in Model) { 
    // Condition to ensure root node is invisible 
    // when it is the current node 
    if (!(node.IsRootNode && node.IsCurrentNode)) 
    { 
     @Html.DisplayFor(m => node); 

     if (node != Model.Last()) { 
      <text> &gt; </text> 
     } 
    } 
} 

Вы также могли бы сделать это, сделав пользовательский visibility provider.

0

Благодарим вас за ответ! :)

я понял, что что-то, как это будет работать:

@foreach (var node in Model.Reverse().Skip(1).Reverse()) { 
    @Html.DisplayFor(m => node); 
    if (node != Model.Last()) { 
     <text>/</text> 
    } 
} 
Смежные вопросы