使用SiteMapPath的问题

时间:2012-04-12 18:36:18

标签: asp.net-mvc-4 sitemap asp.net-mvc-sitemap

在我的网站上,我有以下结构:

  
      
  • 产品类型   
        
    • 产品类别   
          
      • 产品
      •   
    •   
  •   

假设我有一个具有以下特征的产品:

  

产品XYZ     - TypeLink:“type-xyz”     - CategoryLink:“category-xyz”     - 链接:“product-xyz”     ...

该网址将用于产品 / produto / type-xyz / product-xyz#category-xyz

请注意,该类别只不过是Url中的哈希

路线

遵循路线的定义

http://mysticpaste.com/private/kXhF9FFLbw/

注意:路线运转良好!我上市只是为了更好地理解

网页

使用以下命令显示站点地图:

razor @Html.MvcSiteMap().SiteMapPath()

动态

产品类型http://mysticpaste.com/private/yzOR1d0kr9/

产品类别http://mysticpaste.com/private/YzWvrYOt6J/

产品http://mysticpaste.com/private/eDbfxmWAXU/

Mvc.sitemap

http://mysticpaste.com/private/2PztbFuDIs/

如果您需要站点地图的完整代码:http://mysticpaste.com/private/JPKOg1a6g9/

的Web.config

http://mysticpaste.com/private/8WpRGvc7Cq/

问题

我的问题是站点地图没有正确显示标题和链接! 该网站发布在此链接中。 http://datafilme.bindsolution.com/ 例如,您可以打开产品页面“Website da Datafilme”

http://datafilme.bindsolution.com/Produto/software/website-da-datafilme

如您所见,链接是正确的! 但站点地图显示来自其他产品的数据!

1 个答案:

答案 0 :(得分:0)

产品类型(ProdutoTipoDynamicNodeProvider)需要在创建的动态节点上设置密钥属性。

产品类别(ProdutoCategoriaDynamicNodeProvider)也需要设置密钥属性,但还必须将parentKey属性设置为产品类型节点的密钥。

产品(ProdutoDynamicNodeProvider)必须将parentKey属性设置为类别节点的键,但是没有必要设置键,因为当没有子节点时,动态生成的键是可以的。

在您的站点上,使用键和父键的层次结构可以(在productos节点下面):

Scanner de documento                 (key = "scanner")
  Conexões de Rede                   (key = "conexoes", parentKey = "scanners")
    Authoritatively-Disintermediate  (parentKey = "conexoes")
    Super-scanner                    (parentKey = "conexoes")
    Scanner XYZ                      (parentKey = "conexoes")
Equipamentos de microfilmagem        (key = "microfilmagem")
Software                             (key = "software")
  Digitalizacao                      (key = "digitalizacao", parentKey = "software")
    Website da Datafilme             (parentKey = "digitalizacao")