我在主Dashboard SiteMapNode上挂了一个SiteMapNode:
<mvcSiteMapNode title="Dashboard" controller="DB" action="Index">
<mvcSiteMapNode title="Company Users" controller="SGAccount" action="ListSOU" preservedRouteParameters="OrgId,caller"/>
上述产生的面包屑是:“仪表板&gt;公司用户”
我想参考这个,并获得“Dashboard&gt; Yours Sub&gt; 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>
但我仍然得到:“仪表板&gt;公司用户”
我怀疑它仍与第一个SiteMapNode进行模式匹配。
如何确保使用正确的SiteMapNode,从而生成正确的BreadCrumb Trail。顺便说一下,Controller和Action是一样的,所以我不确定Action Attributes会有多大用处?
非常感谢。
答案 0 :(得分: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
它只使用带有另一个querystring参数的默认路由,但您也可以在MVC应用程序中向同一个控制器操作添加一个额外的路由以获得相同的结果。