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

时间:2011-09-08 15:27:25

标签: asp.net-mvc-3 sitemapprovider

我最近开始使用marteenba的sitemap provider,因为我无法解决其他站点地图的路线问题。它比我以前的方式更好。我的问题是:如何从进入单个主页的页面创建不同的痕迹痕迹?考虑以下想法:

站点地图结构

<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

1 个答案:

答案 0 :(得分:5)

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

 [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个节点指向同一个网址,则每个节点必须拥有自己的路由,并且它是MvcSiteMapNodeAttribute上定义的密钥。