Merhaba tabloya bir sütun daha ekleyebilirseniz işlemi daha kolay halledebiliriz aslında.
Bunun adını MenuTyp olarak adlandıracağım. Ana menü ise M alt menü ise T şeklinde veri geldiğini kabul ederek kodları yazıyorum. Controller
Bize sadece CategoryID,CategoryName,ParentID,MenuTyp alanlarından oluşan bir list döndüren model olması gerekiyor.
View <nav class="header__navigation collapse navbar-toggleable-md" id="structurepress-main-navigation" aria-label="Main Menu">
<a class="home-icon" href="index.html">
<i class="fa fa-home"></i>
</a>
<ul class="main-navigation js-main-nav" role="menubar">
@{
List<PageModel> MPage = Model.Where(x => x.MenuTyp == "M").ToList();
foreach (var item in MPage)
{
List<PageModel> TPage = Model.Where(x => x.MenuTyp == "T" && x.ParentID == @item.CategoryID).ToList();
if (TPage.Count > 0)
{
<li class="menu-item-has-children @(item.CategoryID == 0 ? "current-menu-item" : "")">
<a href="#">@item.CategoryName</a>
<ul class="sub-menu">
@foreach (var item2 in TPage)
{
<li>
<a href="#">@item2.CategoryName</a>
</li>
}
</ul>
</li>
}
else
{
<li>
<a href="#">@item.CategoryName</a>
</li>
}
}
}
</ul>
</nav>Burada ana menülerin içinde dolaşarak alt menüleri tespit edip onların içinde dönerek menünün oluşmasını sağladım. Kod tam olarak çalışıyormu test edemedim ama takıldığınız herhangi birşey olursa sorabilirsiniz.