ASP.NET 带有从数据库生成的链接的 MVC5 动态子菜单

ASP.NET MVC5 dynamic submenu with links generated from DB

我需要一个名为 'Executives' 的部分的子菜单(执行部分)。当用户单击主菜单中的行政人员时,此菜单必须显示,并且只要单击行政人员的任何子菜单 link 就会一直存在。 问题是:子菜单 link 是动态的,来自 DB/CMS 系统,因此它不是硬编码列表。这就是我的祸患开始的地方。 目前,我将它放在需要 IEnumerable 模型的 PartialView 中,以便它可以动态构建。 但是,我如何根据需要进行这项工作的方式在我的脑海中有点扭曲。

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

我解决了。 在 _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);
    }

最后是部分:

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

(我 'replace' 任何部分名称中的空格都带有破折号“-”,然后为了 SEO 友好性再次返回。)