我正在尝试遍历多级动态菜单。我已经成功地手动执行此操作,即每次如果要显示Menus
其父级的子级,我必须手动循环。我想知道通过这些动态菜单循环多级的最佳方法或替代方法
这是我到目前为止所做的;
@{ var menusList = ViewBag.Menus as IEnumerable<ParentMenuViewModel>; }
@foreach (var parentMenu in menusList.Where(p => p.ParentId == 0))
{
<ul>
<li>
<h1>@parentMenu.Name</h1>
@if (menusList.Count(p => p.ParentId == parentMenu.MenuId) > 0)
{
<ul>
@foreach (var childMenu in menusList.Where(p => p.ParentId == parentMenu.MenuId))
{
<h2>@childMenu.Name</h2>
if (menusList.Count(p => p.ParentId == childMenu.MenuId) > 0)
{
foreach (var subChild in menusList.Where(p => p.ParentId == childMenu.MenuId))
{
<h3>@subChild.Name</h3>
}
}
}
</ul>
}
</li>
</ul>
}
更新:输出看起来像这样;
HOME
SUB MENU1
SUB SUB MENU1
SUB SUB MENU2
但是,我的数据库中有这样的东西;
HOME
SUB MENU1
SUB SUB MENU1
SUB SUB MENU2
Sub SUB SUB MENU1
Sub SUB SUB MENU2
这是我的模型;