MVC 3 将 2 级菜单渲染为部分视图

发布于 2024-10-19 11:38:38 字数 643 浏览 4 评论 0原文

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

I would like to implement a 2-level parent/child menu in my MVC 3 site such as

Company
 - Background
 - Contact

I have implemented a single, parent level menu as a PartialView like so ...

 <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>

and then included it on my MasterPage ...

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

The problem is that I would like to render a second child-menu based on the menu item selected at the parent level. This involves passing the Id of the parent into the controller action that returns the menu model. I'm not sure how I can pass this parent Id into the controller action. Can anyone provide any insights into this? I'm using MVC3 & Razor.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜夜流光相皎洁 2024-10-26 11:38:38

您可能需要查看MvcSiteMapProvider,它处理多级菜单和站点地图。

You may want to check out MvcSiteMapProvider which handles multilevel menu and sitemaps.

×纯※雪 2024-10-26 11:38:38

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

Looks like you're using Razor and while I'm not super familiar with that I'll take a shot at it. Basically you're going to pass a new object that has a single property of "id" to the MainMenu view. That will create another menu. Your MainMenu action should take an optional parameter of id.

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

Here is what your new list item would look like.

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

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

</li>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文