是否可以使用面包屑有两条不同的路径?
Is it possible to have two different paths using breadcrumbs?
我正在使用 MvcSiteMapProvider 在我的应用程序中生成面包屑。
@Html.MvcSiteMap().SiteMapPath()
在应用程序中,我们有一个 Batch 实体和一个 Item 实体。批次有项目。但是在应用程序中可以在不通过特定 Batch 的情况下访问 Items。
如果用户像这样经过 Batch,我想显示用户遵循的路径:
首页 -> 批次 -> [批号] -> [项目]
如果项目是直接访问的,我想显示这样的路径:
首页 -> 物品 -> [物品]
我的mvc.sitemap配置如下:
<mvcSiteMapNode title="$resources:Resources.Resources,Home" controller="Home" action="Index" preservedRouteParameters="culture">
<mvcSiteMapNode title="$resources:Resources.Resources,Batch" controller="Batch" action="Index" preservedRouteParameters="culture">
<mvcSiteMapNode title="$resources:Resources.Resources,NewBatch" controller="Batch" action="Create" preservedRouteParameters="culture" visibility="SiteMapPathHelper,!*" />
<mvcSiteMapNode title="Edit" controller="Batch" action="Edit" preservedRouteParameters="culture,batchId" visibility="SiteMapPathHelper,!*">
<mvcSiteMapNode title="Item" controller="Item" action="Edit" preservedRouteParameters="culture,itemId,batchId" visibility="SiteMapPathHelper,!*">
</mvcSiteMapNode>
<mvcSiteMapNode title="$resources:Resources.Resources,NewItem" controller="Item" action="Create" preservedRouteParameters="culture,noLot" visibility="SiteMapPathHelper,!*" />
</mvcSiteMapNode>
</mvcSiteMapNode>
<mvcSiteMapNode title="$resources:Resources.Resources,Item" controller="Item" action="Index" preservedRouteParameters="culture">
<mvcSiteMapNode title="Item" controller="Item" action="Edit" preservedRouteParameters="culture,itemId" visibility="SiteMapPathHelper,!*">
</mvcSiteMapNode>
<mvcSiteMapNode title="$resources:Resources.Resources,NewItem" controller="Item" action="Create" preservedRouteParameters="culture" visibility="SiteMapPathHelper,!*" />
</mvcSiteMapNode>
</mvcSiteMapNode>
可以吗?
使用当前配置,显示的路径始终为:
首页 -> 批次 -> [批号] -> [项目]
如果我颠倒 mvc.sitemap 文件中的顺序,它总是显示:
首页 -> 物品 -> [物品]
没有
第一个匹配总是获胜,并且使用相同路由值配置的多个节点不支持。
SiteMap 根本不使用会话状态,因此没有 "previous URL" 用户访问过的概念。有关其工作原理的完整说明,请参阅 How To Make MvcSiteMapProvider Remember a User's Position。
唯一的内置选项是 add additional information to the URL(路径或查询字符串)来区分 URL,因为第一个匹配总是获胜。当用户位于 "pass through" 页面时,您可能会生成不同的 URL。
但是,也可以使用依赖注入来替换 MvcSiteMapProvider
的匹配行为,这样它就可以匹配会话状态值。如果您这样做,那么 URL 就不需要不同,但您仍然需要在每个 "pass through" 页面上设置会话状态键和值。只要您在用户不通过任何页面时始终配置默认页面,它就可以正常工作。见 demo project and explanation how to use it.
我正在使用 MvcSiteMapProvider 在我的应用程序中生成面包屑。
@Html.MvcSiteMap().SiteMapPath()
在应用程序中,我们有一个 Batch 实体和一个 Item 实体。批次有项目。但是在应用程序中可以在不通过特定 Batch 的情况下访问 Items。
如果用户像这样经过 Batch,我想显示用户遵循的路径:
首页 -> 批次 -> [批号] -> [项目]
如果项目是直接访问的,我想显示这样的路径:
首页 -> 物品 -> [物品]
我的mvc.sitemap配置如下:
<mvcSiteMapNode title="$resources:Resources.Resources,Home" controller="Home" action="Index" preservedRouteParameters="culture">
<mvcSiteMapNode title="$resources:Resources.Resources,Batch" controller="Batch" action="Index" preservedRouteParameters="culture">
<mvcSiteMapNode title="$resources:Resources.Resources,NewBatch" controller="Batch" action="Create" preservedRouteParameters="culture" visibility="SiteMapPathHelper,!*" />
<mvcSiteMapNode title="Edit" controller="Batch" action="Edit" preservedRouteParameters="culture,batchId" visibility="SiteMapPathHelper,!*">
<mvcSiteMapNode title="Item" controller="Item" action="Edit" preservedRouteParameters="culture,itemId,batchId" visibility="SiteMapPathHelper,!*">
</mvcSiteMapNode>
<mvcSiteMapNode title="$resources:Resources.Resources,NewItem" controller="Item" action="Create" preservedRouteParameters="culture,noLot" visibility="SiteMapPathHelper,!*" />
</mvcSiteMapNode>
</mvcSiteMapNode>
<mvcSiteMapNode title="$resources:Resources.Resources,Item" controller="Item" action="Index" preservedRouteParameters="culture">
<mvcSiteMapNode title="Item" controller="Item" action="Edit" preservedRouteParameters="culture,itemId" visibility="SiteMapPathHelper,!*">
</mvcSiteMapNode>
<mvcSiteMapNode title="$resources:Resources.Resources,NewItem" controller="Item" action="Create" preservedRouteParameters="culture" visibility="SiteMapPathHelper,!*" />
</mvcSiteMapNode>
</mvcSiteMapNode>
可以吗?
使用当前配置,显示的路径始终为:
首页 -> 批次 -> [批号] -> [项目]
如果我颠倒 mvc.sitemap 文件中的顺序,它总是显示:
首页 -> 物品 -> [物品]
没有
第一个匹配总是获胜,并且使用相同路由值配置的多个节点不支持。
SiteMap 根本不使用会话状态,因此没有 "previous URL" 用户访问过的概念。有关其工作原理的完整说明,请参阅 How To Make MvcSiteMapProvider Remember a User's Position。
唯一的内置选项是 add additional information to the URL(路径或查询字符串)来区分 URL,因为第一个匹配总是获胜。当用户位于 "pass through" 页面时,您可能会生成不同的 URL。
但是,也可以使用依赖注入来替换 MvcSiteMapProvider
的匹配行为,这样它就可以匹配会话状态值。如果您这样做,那么 URL 就不需要不同,但您仍然需要在每个 "pass through" 页面上设置会话状态键和值。只要您在用户不通过任何页面时始终配置默认页面,它就可以正常工作。见 demo project and explanation how to use it.