mvc 3站点地图提供程序 - 指向同一节点的多个路径

Adr*_*oRR 4 sitemapprovider asp.net-mvc-3

我最近开始使用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>
Run Code Online (Sandbox Code Playgroud)

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

我感谢您的帮助.

编辑

在论坛上搜索我发现了类似的问题.因此,请考虑以下结构:

Home >> Search >> Contracts
Home >> Another Search >> Contracts
Home >> Advanced Search >> Contracts
Home >> Web Service Search >> Extra fields >> Contracts
Run Code Online (Sandbox Code Playgroud)

Adr*_*oRR 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...         
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,将在面包屑路径上正确定义每种搜索.请记住,您必须为要使用的每种"搜索"定义不同的路线.因此,如果您希望有3个节点指向同一个URL,则每个节点必须拥有自己的路由,并且它是定义的密钥MvcSiteMapNodeAttribute.