1

我正在尝试使用 MvcSiteMapProvider 中的多个导航路径到单个页面功能:https ://github.com/maartenba/MvcSiteMapProvider/wiki/Multiple-Navigation-Paths-to-a-Single-Page

这些是指向同一资源的 2 个不同的导航路径:

<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>

但是,面包屑总是为最上面的那个生成。有什么我想念的吗?

4

2 回答 2

1

是的,你缺少一些东西。同一节点不能同时使用路由值和保留路由值。我已经更新了 wiki 页面,因为示例配置也无效。

<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>

请注意,在这种情况下,preservedRouteParameters 中缺少“类型”。

使用 reservedRouteParameters 是为了通过从当前请求中复制参数来强制所有可能的 Id 匹配单个节点。这通常仅在使 SiteMapPath HTML 帮助程序与 CRUD 操作一起使用时有用,您使用数据库记录的列表或表格作为主要导航。如果您正在使用 Menu 或 SiteMap HTML 帮助程序,或者您希望在 /sitemap.xml 端点(搜索引擎的站点地图 XML)中列出页面,则不建议使用 reservedRouteParameters。

我在我的博客上创建了这个功能的工作演示:http: //www.shiningtreasures.com/post/2013/08/10/mvcsitemapprovider-4-seo-features#canonical-tag

于 2013-08-29T23:12:51.437 回答
0

这暂时有效:

MvcSiteMapProvider.SiteMaps.GetSiteMap().Clear(); MvcSiteMapProvider.SiteMaps.GetSiteMap().BuildSiteMap();

我想我会继续使用它,直到我弄清楚缓存是如何在 MvcSiteMapProvider 上工作的

于 2013-08-30T17:06:53.243 回答