我正在尝试使用MvcSiteMapProvider中的单页功能的多个导航路径:https://github.com/maartenba/MvcSiteMapProvider/wiki/Multiple-Navigation-Paths-to-a-Single-Page
这些是指向同一资源的两种不同的导航路径:
<mvcSiteMapNode title="Multi Analysis" controller="Report" action="MultiAnalysis" preservedRouteParameters="id">
<mvcSiteMapNode title="Analysis" controller="Report" action="Analysis" preservedRouteParameters="id,type" type="ma" />
</mvcSiteMapNode>
<mvcSiteMapNode title="Single Analysis" controller="Report" action="SingleAnalysis" preservedRouteParameters="id">
<mvcSiteMapNode title="Analysis" controller="Report" action="Analysis" preservedRouteParameters="id,type" type="sa" />
</mvcSiteMapNode>
但是,面包屑始终是为顶级生成的。有什么东西我不见了吗?
答案 0 :(得分:1)
是的,有些东西你不见了。路由值和保留的路由值不能同时用于同一节点。我更新了维基页面,因为示例配置也无效。
<mvcSiteMapNode title="Multi Analysis" controller="Report" action="MultiAnalysis" preservedRouteParameters="id">
<mvcSiteMapNode title="Analysis" controller="Report" action="Analysis" preservedRouteParameters="id" type="ma" />
</mvcSiteMapNode>
<mvcSiteMapNode title="Single Analysis" controller="Report" action="SingleAnalysis" preservedRouteParameters="id">
<mvcSiteMapNode title="Analysis" controller="Report" action="Analysis" preservedRouteParameters="id" type="sa" />
</mvcSiteMapNode>
请注意,在这种情况下,savedRouteParameters中缺少“type”。
使用savedRouteParameters用于通过从当前请求复制参数来强制所有可能的ID匹配单个节点。这通常仅用于使SiteMapPath HTML帮助程序与CRUD操作一起使用,其中您使用数据库记录的列表或表作为主导航。如果您使用的是Menu或SiteMap HTML帮助程序,或者您希望使用/sitemap.xml端点中列出的页面(搜索引擎的站点地图XML),则不建议使用savedRouteParameters。
我已在我的博客上创建了此功能的工作演示:http://www.shiningtreasures.com/post/2013/08/10/mvcsitemapprovider-4-seo-features#canonical-tag
答案 1 :(得分:0)
现在有效:
MvcSiteMapProvider.SiteMaps.GetSiteMap().Clear();
MvcSiteMapProvider.SiteMaps.GetSiteMap().BuildSiteMap();
我想我会继续使用这个,直到我弄清楚缓存如何在MvcSiteMapProvider上运行