【发布时间】:2016-01-20 22:21:25
【问题描述】:
我有一个从数据库中填充的 MVC 菜单。我有代码让它到达第四个菜单子项。我想知道是否有更好的方法在我的 cshtml 中编写此代码,以便它自动检测菜单子项,我不必将菜单硬编码到某个级别。谢谢你的帮助。
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
@foreach (var menuLevel1 in navbarmenu)
{
<li class="dropdown">
<a href="~/CATS/Default.aspx">
@menuLevel1.MenuName<span class="caret"></span>
</a>
@{var navbarsubmenu = myMenu.Where(x => x.ParentID == menuLevel1.MenuID && x.IsDeleted == false && x.IsEnabled == true).ToList().OrderBy(x => x.MenuName);}
@if (navbarsubmenu.IsAny())
{
<ul class="dropdown-menu">
@foreach (var menuLevel2 in navbarsubmenu)
{
<li class="dropdown-submenu">
@if (menuLevel2.MenuLink != null && menuLevel2.MenuLink != "")
{
<a href="@Url.Content(menuLevel2.MenuLink)">
@menuLevel2.MenuName
</a>
}
else
{
<a href="~/CATS/Default.aspx">
@menuLevel2.MenuName
</a>
}
@{var navbarsubmenu2 = myMenu.Where(x => x.ParentID == menuLevel2.MenuID && x.IsDeleted == false && x.IsEnabled == true).ToList().OrderBy(x => x.MenuName);}
@if (navbarsubmenu2.IsAny())
{
<ul class="dropdown-menu">
@foreach (var menuLevel3 in navbarsubmenu2)
{
<li class="dropdown-submenu">
@if (menuLevel3.MenuLink != null && menuLevel3.MenuLink != "")
{
<a href="@Url.Content(menuLevel3.MenuLink)">
@menuLevel3.MenuName
</a>
}
else
{
<a href="~/CATS/Default.aspx">
@menuLevel3.MenuName
</a>
}
@{var navbarsubmenu3 = myMenu.Where(x => x.ParentID == menuLevel3.MenuID && x.IsDeleted == false && x.IsEnabled == true).ToList().OrderBy(x => x.MenuName);}
@if (navbarsubmenu3.IsAny())
{
<ul class="dropdown-menu">
@foreach (var menuLevel4 in navbarsubmenu3)
{
<li class="dropdown-submenu">
@if (menuLevel4.MenuLink != null && menuLevel4.MenuLink != "")
{
<a href="@Url.Content(menuLevel4.MenuLink)">
@menuLevel4.MenuName
</a>
}
else
{
<a href="~/CATS/Default.aspx">
@menuLevel4.MenuName
</a>
}
</li>
}
</ul>
}
</li>
}
</ul>
}
</li>
}
</ul>
}
</li>
}
</ul>
【问题讨论】:
-
您可以使用分层模型和递归函数(沿线this answer
-
看这个网站Link
-
@StephenMuecke 我确实喜欢这个答案,请看看我是如何改编它的。谢谢