MVC 3 рендеринг двухуровневого меню как частичное - PullRequest
2 голосов
/ 24 февраля 2011

Я хотел бы реализовать 2-уровневое родительское / дочернее меню на моем сайте MVC 3, например

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");}

Проблема в том, что я хотел бы создать второе дочернее меню на основе пункта меню, выбранного в родительскомуровень.Это включает передачу идентификатора родителя в действие контроллера, которое возвращает модель меню.Я не уверен, как я могу передать этот родительский идентификатор в действие контроллера.Может ли кто-нибудь дать представление об этом?Я использую MVC3 и Razor.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

Возможно, вы захотите проверить MvcSiteMapProvider , который обрабатывает многоуровневое меню и карты сайта.

0 голосов
/ 24 февраля 2011

Похоже, вы используете Razor, и хотя я не очень знаком с этим, я сделаю попытку. По сути, вы собираетесь передать новый объект с единственным свойством id в представление MainMenu. Это создаст другое меню. Ваше действие 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>
...