单页的多个导航路径

时间:2013-08-28 21:27:26

标签: asp.net-mvc mvcsitemapprovider

我正在尝试使用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>

但是,面包屑始终是为顶级生成的。有什么东西我不见了吗?

2 个答案:

答案 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上运行