【问题标题】:How to hide root level when using MvcSiteMapProvider?使用 MvcSiteMapProvider 时如何隐藏根级别?
【发布时间】:2015-02-25 17:55:23
【问题描述】:

我正在使用 MvcSiteMapProvider 创建一个简单的面包屑。我有一个我无法解决的小问题。假设我的网站包含五个选项卡:主页、客户、公司、报告和关于(这些是顶级选项卡)

当用户浏览主页时,我不希望显示面包屑。但是,当用户在客户页面上时,面包屑导航应该显示“主页”(这同样适用于其他顶级选项卡 - 当然除了主页)。对于下一个级别,假设用户在客户页面上单击了一个名为“客户详细信息”的链接,面包屑应该显示“主页/客户”。所以基本上,顶层被省略了。

我该如何存档?非常感谢任何帮助! :)

【问题讨论】:

    标签: model-view-controller hide root breadcrumbs mvcsitemapprovider


    【解决方案1】:

    最简单的方法就是编辑/Views/Shared/DisplayTemplates/目录下的SiteMapPathHelperModel.cshtml模板文件。

    @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 来做到这一点。

    【讨论】:

      【解决方案2】:

      感谢您的回复! :)

      我意识到这样的事情也可以:

      @foreach (var node in Model.Reverse().Skip(1).Reverse()) { 
          @Html.DisplayFor(m => node);
          if (node != Model.Last()) {
              <text> / </text>
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2012-03-29
        • 1970-01-01
        • 1970-01-01
        • 2016-06-11
        • 1970-01-01
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多