我想有两个级别的菜单如下:
Item1 | 第2项 |项目3
Item2.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 :(得分: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操作方法相对应,因为控制器名称和操作名称都匹配。