0

我想要两级菜单,如下所示:

项目1 | 项目2 | 第 3 项

项目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 节点,因此我无法突出显示正确的项目。

4

1 回答 1

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 操作方法相对应,因为控制器名称和操作名称都匹配。

于 2014-04-09T06:10:26.947 回答