【问题标题】:MVC Sitemap two pages should link the same nodeMVC Sitemap 两个页面应该链接同一个节点
【发布时间】:2014-09-18 08:41:26
【问题描述】:

我将 MvcSitemap 用于主菜单,我需要组织两个动作引用菜单中的一个节点。例如页面产品,页面上有过滤。

controller="Product" action="Index"
控制器=“产品”动作=“过滤器”

现在我已经定义了这个节点:

它工作正常。右侧的菜单项被选中。但是当“过滤器”动作起作用时,没有定义任何菜单项。 过滤完成后是否可以选择菜单中的“产品”节点?

【问题讨论】:

    标签: c# asp.net-mvc mvcsitemapprovider


    【解决方案1】:

    SiteMap 要求每个节点必须有一个唯一的 URL,否则在查找“当前”节点时将无法区分它们。在这种情况下,第一场比赛将永远获胜。

    您可以通过向 URL 添加额外的查询字符串参数来解决此限制。

    <mvcSiteMapNode title="Filtered Product" controller="Product" action="Filter" filtered="true"/>
    

    或者通过更改路由配置以包含额外的路由参数来使请求唯一。

    如果 URL 都面向 Internet,您可以使用 canonicalKey 属性告诉搜索引擎您打算将相同的内容放在 2 个 URL 上。

    <mvcSiteMapNode title="Product" controller="Product" action="Index" key="Product_Index"/>
    <mvcSiteMapNode title="Filtered Product" controller="Product" action="Filter" filtered="true" canonicalKey="Product_Index"/>
    

    然后将规范的 HTML 帮助程序添加到布局页面的 head 部分。

    <head>
        @Html.MvcSiteMap().CanonicalTag()
    </head>
    

    参考文献

    http://www.shiningtreasures.com/post/2013/08/10/mvcsitemapprovider-4-seo-features#canonical-tag https://github.com/maartenba/MvcSiteMapProvider/wiki/Multiple-Navigation-Paths-to-a-Single-Page https://github.com/maartenba/MvcSiteMapProvider/wiki/HtmlHelper-extensions

    【讨论】:

      猜你喜欢
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 2013-02-17
      • 1970-01-01
      相关资源
      最近更新 更多