【问题标题】:MVC 3 Rendering 2-Level Menu as Partial ViewMVC 3 将 2 级菜单渲染为局部视图
【发布时间】:2011-07-03 05:26:27
【问题描述】:

我想在我的 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。

【问题讨论】:

    标签: asp.net-mvc-3 partial-views renderpartial renderaction


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      看起来你正在使用 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多