我需要有一个名为' Executives'的部分的子菜单(执行部分)。当用户单击主菜单中的“管理员”时,此菜单必须显示,并且只要单击“管理员”的任何子菜单链接,该菜单就会保留。 Catch是:子菜单链接是动态的,来自DB / CMS系统,因此它不是硬编码列表。这是我的悲哀开始的地方。 目前,我在PartialView中有它需要一个IEnumerable模型,所以它可以动态构建。 但是我如何在需要的时候开始做这项工作在我的脑海中有点扭曲。
@using xxx.Models
@model IEnumerable<xxx.Models.ExecutiveSection>
<ul class="nav navbar-nav">
@foreach (ExecutiveSection es in Model)
{
<li>@Html.ActionLink(es.SectionName, "Section", "Executive", new { id = es.ExecutiveSectionId })</li>
}
答案 0 :(得分:0)
我解决了。 这是在_Layout
中做到的 @{ // Sub-Menu for Executive Sections
if (HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString().Contains("Executive"))
{
Html.RenderAction("ExecutiveSubMenu", "Executive");
}
}
在控制器中:
public ActionResult ExecutiveSubMenu()
{
// get sections
var sections = db.ExecutiveSections.ToList();
return PartialView("ExecutiveSubMenuView", sections);
}
最后是Partial:
@using xxx.Models
@model IEnumerable<xxx.Models.ExecutiveSection>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
@foreach (ExecutiveSection es in Model)
{
<li>@Html.ActionLink(es.SectionName, "Section", "Executive", new { id = es.SectionName.Replace(" ", "-") }, null)</li>
}
</ul>
(我'用'破折号'替换'任何部分名称中的空格' - '然后再换回SEO友好。)