MvcSiteMapNode没有控制器

时间:2014-02-19 01:31:05

标签: asp.net asp.net-mvc mvcsitemapprovider

我的网站应该打印以下菜单:

  • 客户(无链接)
    • 列表/客户/指数
    • 新/客户/新

根菜单不应该是任何链接,它只是一个容纳实际子菜单的容器。 可以用mvcSiteMap完成吗?

我尝试了以下操作,但“List”从不是CurrentNode。 “客户”总是得到IsCurrentNode,因为我不能应用写css:

<mvcSiteMapNode title="Home" controller="Home" action="Index" visibility="MenuHelper,!*">
 <mvcSiteMapNode title="Customers" controller="Customer" action="Index" area="Admin" clickable="false" description="Todos os clientes cadastrados" cssClass="icon-group">
   <mvcSiteMapNode title="List" action="Index" description="Todos os clientes cadastrados"/>
   <mvcSiteMapNode title="the customers" action="Details" preservedRouteParameters="customerId" visibility="SiteMapPathHelper,!*"/>
   <mvcSiteMapNode title="New" action="New" />
 </mvcSiteMapNode>
</mvcSiteMapNode>

1 个答案:

答案 0 :(得分:3)

您只需要从不可点击的分组节点中删除“索引”,以便永远不会匹配。基本上,这里有2个节点具有完全相同的路由签名:

面积= “管理” 控制器=“客户” 行动= “索引”

在SiteMap中匹配的第一个总是获胜。因此,如果您从第一个删除“索引”(您可以因为它不可点击,因此在该节点上忽略所有路由设置但仍可继承),只要您有一个,它就永远不会匹配在您的路线中配置默认​​操作。

<mvcSiteMapNode title="Home" controller="Home" action="Index" visibility="MenuHelper,!*">
 <mvcSiteMapNode title="Customers" controller="Customer" area="Admin" clickable="false" description="Todos os clientes cadastrados" cssClass="icon-group">
   <mvcSiteMapNode title="List" action="Index" description="Todos os clientes cadastrados"/>
   <mvcSiteMapNode title="the customers" action="Details" preservedRouteParameters="customerId" visibility="SiteMapPathHelper,!*"/>
   <mvcSiteMapNode title="New" action="New" />
 </mvcSiteMapNode>
</mvcSiteMapNode>