Я пытаюсь перебирать многоуровневые динамические меню. Мне удалось сделать это вручную каждый раз, если вы хотите отобразить дочерний элемент Menus
его родительского элемента, мне нужно выполнить цикл вручную. Я хотел бы знать лучший способ или альтернативу циклического многоуровневого управления этими динамическими меню Вот что я сделал до сих пор;Loop Through Многоуровневые динамические меню в Asp.Net MVC
@{ 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>
}
UPDATE: Вывод выглядит следующим образом;
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
Это моя модель;
изменен в зависимости от моей потребности, и это сработало. Спасибо –
вы можете сделать его asycronous (ваш код). я пытался, но не добился успеха. Использование async и ожидание ключевых слов –