4

我最近开始使用 marteenba 的站点地图提供程序,因为我无法解决我拥有的其他站点地图的路线问题。比我之前的好多了 我的问题是:如何从转到单个主页的页面创建不同的面包屑路径?考虑下面的想法:

站点地图结构

<mvcSiteMapNode title="Home" controller="Home" action="Index" changeFrequency="Always" updatePriority="Normal">
       <mvcSiteMapNode title="Clients Search" controller="ClientBussiness" action="ClientSearch" description="Clients Search">
            <mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
        </mvcSiteMapNode>

        <mvcSiteMapNode title="Advanced Search" controller="ClientBussiness" action="AdvancedSearch" description="Clients Advanced Search">
            <mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
        </mvcSiteMapNode>

        <mvcSiteMapNode title="Another Search" controller="ClientBussiness" action="AnotherSearch" description="Clients Another Search">
            <mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
        </mvcSiteMapNode>
</mvcSiteMapNode>

在上面的示例中,我的面包屑跟踪始终显示节点客户端搜索而不是任何其他节点。我不知道是否应该为每种搜索创建不同的路线(我在上一个站点地图上这样做了,但不幸的是 iis6 不喜欢它)。

我感谢您的帮助。

编辑

在论坛上搜索我发现了一个类似的问题。所以,考虑下面的结构:

Home >> Search >> Contracts
Home >> Another Search >> Contracts
Home >> Advanced Search >> Contracts
Home >> Web Service Search >> Extra fields >> Contracts
4

1 回答 1

5

好吧,看来我需要做的就是在我的控制器上添加一些动态节点属性。您可以在此处阅读如何操作。使用上面的示例,它是如何完成的:

 [MvcSiteMapNodeAttribute(Title = "Search", Key = "search", ParentKey = "ContractSearch", Route = "SearchRoute")]
        [MvcSiteMapNodeAttribute(Title = "AdvancedSearch", Key = "ContractAdvSearch", ParentKey = "AdvSearch", Route = "AdvSearchRoute")]
        [MvcSiteMapNodeAttribute(Title = "AnotherSearch", Key = "ContractAnotherSearch", ParentKey = "AnotherSearch", Route = "AnotherSearchRoute")]
        public ActionResult ContractIndex()
{
   //Things to do...         
}

在上面的示例中,每种搜索都将在面包屑路径上正确定义。请记住,您必须为要使用的每种“搜索”定义不同的路线。所以,如果你想让 3 个节点指向同一个 url,每个节点都必须有它自己的路由和它的键,定义在MvcSiteMapNodeAttribute.

于 2011-09-12T13:14:35.910 回答