2017-03-15 24 views
0

嗨,我想在佈局頁面中動態加載菜單。動態菜單在mvc中加載不正確?

1)AccountsMasters 

1.1)AccountsCategory 

1.2)Accounts 

這裏我打開子菜單即賬戶類別,動態賬戶,但我能無法加載帳戶Master主菜單dynamically.I試圖加載主菜單相同,像子菜單,但其裝載2倍,是 如

1)AccountsMasters 

1.1)AccountsCategory 

1)AccountsMasters 

1.2)Accounts 

其負載主菜單兩次

我的表

UID MainMenuName SubMenuName MAINMENIID

1 ACCOUNTSMASTER ACCOUNTS 1個

2 ACCOUNTMASTER ACCOUNTSCATEGORY 1

3 PRODUCTMASTER PRODUCTS 2

4 PRODUCTMASTER產品分類2

我的模型SubMenuViewModel

public class SubMenuviewmodel 
{ 
    public string SubMenu { get; set; } 
    public string ActionName { get; set; } 
    public string MainMenuName { get; set; } 
    public string ControllerName { get; set; } 

} 

菜單模型

public class Menu 
{ 
    public Menu() 
    { 
     MenuItems = new List<MenuItem>(); 
     SubMenuItems = new List<SubMenuviewmodel>(); 
    } 

    public int Id { get; set; } 
    public string Name { get; set; } 
    public List<MenuItem> MenuItems { get; set; } 
    public List<SubMenuviewmodel> SubMenuItems { get; set; } 
} 

我的控制器

public ActionResult SubMenu() 
    { 
     var menu = new Menu(); 

     var submenu = db.SubAplicationNames.Select(e => new 
     { 
      submenuuid = e.SubAplicationNameID, 
      submenuname = e.SubMenuName, 
      submenuparentidd = e.SubAplicationNameID, 
      mainmenuname=e.ApplicationName 

     }).ToList(); 

     var submenulist = new List<SubMenuviewmodel>(); 
     for (var item = 0; item < submenu.Count();item++) 
     { 
      var submenuitemslist = new SubMenuviewmodel { SubMenu = submenu[item].submenuname.ToString(),MainMenuName=submenu[item].mainmenuname 
       ,ControllerName="",ActionName="" }; 
      submenulist.Add(submenuitemslist); 
     } 
     menu.SubMenuItems = submenulist; 
      return View(menu); 
    } 

我查看代碼

@model DynamicMenuLoading.Models.Menu 
    @{ 
    Layout = null; 
    } 
    <ul> 
    <li> 
    @foreach(var item in Model.SubMenuItems) 
    { 
    <a href="#"> 
     <span>@item.MainMenuName</span> 
    </a> 

    <ul> 
     <li><a href="@Url.Action(item.ActionName , item.ControllerName)"><i class="fa fa-circle-o"></i>@item.SubMenu</a></li> 

    </ul> 
     } 
     </li> 
    </ul> 

該代碼給出了上面提到的結果,它給出錯誤的輸出。任何人告訴我我做了什麼錯誤。我盡我最大努力解釋了這個問題。任何人都能理解我的問題並幫助我解決這個問題。

提前謝謝..

回答

1

怎麼樣,如果你嘗試這樣

@model DynamicMenuLoading.Models.Menu 
    @{ 
    Layout = null; 
    } 
    <ul> 
    <li> 
    @{ 
    string name = ""; 

    foreach (var item in Model.SubMenuItems) 
    { 
     if (item.MainMenuName != name) 
     { 
      name = item.MainMenuName; 
      <a href="#"> 
       <span>@item.MainMenuName</span> 
      </a> 
     } 


     <ul> 
     <li><a href="@Url.Action(item.ActionName , item.ControllerName)"><i class="fa fa-circle-o"></i>@item.SubMenu</a></li> 

    </ul> 

    } 
    } 
    </li> 
    </ul>