2

我想在我的 MVC 3 站点中实现一个 2 级父/子菜单,例如

Company
 - Background
 - Contact

我已经实现了一个单一的父级菜单作为 PartialView 像这样......

 <div id="menu" class="block">
    <ul id="menuItems">
        foreach (var item in Model)
        {
        <li id="@item.Id">@Html.ActionLink(item.Name, item.Action,item.Controller)</li>
        }
    </ul>
 </div>

然后将其包含在我的 MasterPage 中...

 @{Html.RenderAction("MainMenu", "Menu");}

问题是我想根据在父级别选择的菜单项呈现第二个子菜单。这涉及将父级的 Id 传递到返回菜单模型的控制器操作中。我不确定如何将此父 ID 传递给控制器​​操作。任何人都可以对此提供任何见解吗?我正在使用 MVC3 和 Razor。

4

2 回答 2

2

您可能想查看处理多级菜单和站点地图的MvcSiteMapProvider 。

于 2011-04-18T16:44:53.030 回答
0

看起来你正在使用 Razor,虽然我不太熟悉,但我会试一试。基本上,您将向 MainMenu 视图传递一个具有单一属性“id”的新对象。这将创建另一个菜单。您的 MainMenu 操作应采用可选参数 id。

public ActionResult MainMenu(int? id = null) {
  ...
}

这是您的新列表项的外观。

<li id="@item.Id">@Html.ActionLink(item.Name, item.Action,item.Controller)

@{Html.RenderAction("MainMenu", "Menu", new { id = item.Id });}

</li>
于 2011-02-24T05:25:14.543 回答