2012-07-19 99 views
0

我想要有如下两级菜单:固定长度菜单

Item1 | Item2 | Item3

项目2.1 |项目2.2 |第2.3项

如何编写站点地图文件和MenuHelperModel以获得如上所述的效果?

编辑:我创建网站地图文件是这样的:

<mvcSiteMapNode title="MyApp" clickable="false"> 
    <mvcSiteMapNode title="Item1" controller="Item11"> 
     <mvcSiteMapNode title="Item1.1" controller="Item11" /> 
     <mvcSiteMapNode title="Item1.2" controller="Item12" /> 
    </mvcSiteMapNode> 
    ... 
</mvcSiteMapNode> 

不幸IsInCurrentPath只为MyApp的节点是真实的,所以我不能强调正确的项目。

+0

您是否尝试过在节点上定义相应的控制器操作? – Xharze 2012-07-20 08:27:19

+0

MyApp节点没有相应的控制器。 – 2012-07-20 10:23:18

回答

0

正如Xharze指出的那样,您必须指定控制器操作,以使MvcSiteMapProvider节点能够与MVC一起工作。

<mvcSiteMapNode title="MyApp" clickable="false"> 
    <mvcSiteMapNode title="Item1" controller="Item11" action="Index"> 
     <mvcSiteMapNode title="Item1.1" controller="Item11" action="Decimal1" /> 
     <mvcSiteMapNode title="Item1.2" controller="Item12" action="Decimal2" /> 
    </mvcSiteMapNode> 
    ... 
</mvcSiteMapNode> 

的事实,即MyApp的节点无法点击只是意味着这将是一个不可点击组节点,这是没有必要的,以提供在此情况下的控制器或操作。

对于其他节点,控制器和动作参数必须对应于MVC控制器和动作。

public class Item1Controller : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Decimal1() 
    { 
     return View(); 
    } 

    public ActionResult Decimal2() 
    { 
     return View(); 
    } 
} 

例如,<mvcSiteMapNode title="Item1.1" controller="Item11" action="Decimal1" />节点将与上述因为Decimal1操作方法两者对应的控制器名称和动作名称匹配。