1

我有一个 SiteMapNode 挂在主仪表板 SiteMapNode 上:

    <mvcSiteMapNode title="Dashboard" controller="DB" action="Index">
      <mvcSiteMapNode title="Company Users" controller="SGAccount" action="ListSOU" preservedRouteParameters="OrgId,caller"/>

以上产生的面包屑为:“Dashboard > Company Users”

我也想参考这个,并得到“仪表板>你的子>公司用户”

    <mvcSiteMapNode title="Dashboard" controller="DB" action="Index">

      <mvcSiteMapNode title="Your Sub" controller="SOU" action="ListSub">
         <mvcSiteMapNode title="Company Users" controller="SGAccount" action="ListSOU" preservedRouteParameters="OrgId,caller"/>
     </mvcSiteMapNode> 

    </mvcSiteMapNode> 

但是我仍然得到:“仪表板>公司用户”

我怀疑它仍然是针对第一个 SiteMapNode 的模式匹配。

如何确保使用正确的 SiteMapNode,从而生成正确的 BreadCrumb Trail。顺便说一句,Controller 和 Action 是一样的,所以我不确定 Action Attributes 会有多大用处?

非常感谢。

4

1 回答 1

3

站点地图的指导原则是每个节点必须是唯一的。因此,您不能在 2 个不同的地方有 1 个节点,因为匹配始终是第一个节点。

但是,您可以创建 2 个指向同一资源的不同节点,每个节点都有自己唯一的路由(和唯一的 URL)。您只需要确保有不止一条路线可以到达您的操作。这里有一个描述如何做到这一点的文档:https ://github.com/maartenba/MvcSiteMapProvider/wiki/Multiple-Navigation-Paths-to-a-Single-Page

此外,我的博客上有一个工作示例:http: //www.shiningtreasures.com/post/2013/08/10/mvcsitemapprovider-4-seo-features#canonical-tag

这只是使用带有另一个查询字符串参数的默认路由,但您也可以在 MVC 应用程序中为相同的控制器操作添加额外的路由以获得相同的结果。

于 2013-08-23T14:15:03.927 回答