Asp.net mvc ASP.NET MVC5动态子菜单,包含从DB生成的链接
我需要有一个子菜单(行政部门)的一部分称为'行政'。当用户单击主菜单中的Executives时,此菜单必须显示,并且只要单击Executives的任何子菜单链接,此菜单就会保持不变。 问题是:子菜单链接是动态的,来自DB/CMS系统,因此它不是硬编码列表。这就是我悲哀的开始。 目前,我在PartialView中有它,它需要一个IEnumerable模型,以便可以动态构建。 但我是如何在我需要的时候开始工作的,这在我的脑海里有点扭曲Asp.net mvc ASP.NET MVC5动态子菜单,包含从DB生成的链接,asp.net-mvc,asp.net-mvc-5,submenu,Asp.net Mvc,Asp.net Mvc 5,Submenu,我需要有一个子菜单(行政部门)的一部分称为'行政'。当用户单击主菜单中的Executives时,此菜单必须显示,并且只要单击Executives的任何子菜单链接,此菜单就会保持不变。 问题是:子菜单链接是动态的,来自DB/CMS系统,因此它不是硬编码列表。这就是我悲哀的开始。 目前,我在PartialView中有它,它需要一个IEnumerable模型,以便可以动态构建。 但我是如何在我需要的时候开始工作的,这在我的脑海里有点扭曲 @using xxx.Models @model IEnumer
@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>
}
@使用xxx.Models
@模型IEnumerable
@foreach(模型中的ExecutiveSection es)
{
- @ActionLink(es.SectionName,“Section”,“Executive”,新的{id=es.ExecutiveSectionId})
}
我解决了它。
这是在_布局中完成的吗
@{ // 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);
}
最后是部分:
@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>
@使用xxx.Models
@模型IEnumerable
@foreach(模型中的ExecutiveSection es)
{
- @ActionLink(es.SectionName,“Section”,“Executive”,新的{id=es.SectionName.Replace(“,”-”),null)
}
(我将任何节名中的空格“替换”为破折号“-”,然后再次替换以便于搜索引擎优化。)