Model:
public class M_MenuModel
{
#region Variable
public Int32 MMID { get; set; }
public string MM_Name { get; set; }
public string MM_Url { get; set; }
public Int32 MM_Parent { get; set; }
public string MM_Icon { get; set; }
#endregion
}
Controller :
public ActionResult UserMenuShow()
{
ViewBag.Menu = BuildMenu();
return View();
}
private IList<M_MenuModel> BuildMenu()
{
IList<M_MenuModel> mmList = new List<M_MenuModel>(){
// Parent
new M_MenuModel(){ MMID = 1, MM_Name = "Home", MM_Parent = 0, MM_Url = "1"} ,
new M_MenuModel(){ MMID = 2, MM_Name = "Admin", MM_Parent = 0, MM_Url = "1"} ,
new M_MenuModel(){ MMID = 3, MM_Name = "Accounting", MM_Parent = 0, MM_Url = "1"} ,
// Children
new M_MenuModel() { MMID=21, MM_Name = "Create User", MM_Parent = 2, MM_Url="1", MM_Icon="" },
new M_MenuModel() { MMID=22, MM_Name = "Create Group", MM_Parent = 2, MM_Url="2" },
new M_MenuModel() { MMID=23, MM_Name = "Create Account", MM_Parent = 2, MM_Url="3"},
new M_MenuModel() { MMID=31, MM_Name = "Manage Account", MM_Parent = 3, MM_Url="1" },
new M_MenuModel() { MMID=32, MM_Name = "GL Accounts", MM_Parent = 3, MM_Url="2" },
new M_MenuModel() { MMID=321, MM_Name = "Salary Accounts", MM_Parent = 32, MM_Url="1" },
new M_MenuModel() { MMID=322,MM_Name = "Savings Accounts", MM_Parent = 32, MM_Url="2" },
};
return mmList;
}
View:
@{
List<ProjectName.Areas.Admin.Models.M_MenuModel> menuList = ViewBag.Menu;
}
@foreach (var mp in menuList.Where(p => p.MM_Parent == 0))
{
<li>
@if (menuList.Count(p => p.MM_Parent == mp.MMID) > 0)
{
<a href="#@mp.MM_Name" data-toggle="collapse" class="collapsed">@mp.MM_Name <i class="icon-submenu lnr lnr-chevron-left"></i></a>
@:<div ID="@mp.MM_Name" class="collapse">
@:<ul class="nav">
}
@if (menuList.Count(p => p.MM_Parent == mp.MMID) == 0)
{
@:<a href="@mp.MM_Url"> @Html.Raw(@mp.MM_Icon) @mp.MM_Name </a>
}
@RenderMenuItem(menuList, mp)
@if(menuList.Count(p => p.MM_Parent == mp.MMID) > 0)
{
@:</ul>
@:</div>
}
</li>
}
@helper RenderMenuItem(List<Manav_Ashraya_V1.Areas.Admin.Models.M_MenuModel> menuList, Manav_Ashraya_V1.Areas.Admin.Models.M_MenuModel mi)
{
foreach (var cp in menuList.Where(p => p.MM_Parent == mi.MMID))
{
@:<li>
if (menuList.Count(p => p.MM_Parent == cp.MMID) > 0)
{
<a href="#@cp.MM_Name.Replace(' ','_')" data-toggle="collapse" class="collapsed">@cp.MM_Name <i class="icon-submenu lnr lnr-chevron-left"></i></a>
@:<div ID="@cp.MM_Name.Replace(' ','_')" class="collapse">
@:<ul class="nav">
}
if (menuList.Count(p => p.MM_Parent == cp.MMID) == 0)
{
@:<a href="@cp.MM_Url">@cp.MM_Name</a>
}
@RenderMenuItem(menuList, cp)
if (menuList.Count(p => p.MM_Parent == cp.MMID) > 0)
{
@: </ul>
@:</div>
}
else
{
@:</li>
}
}
}