Kod:
public class MenuModel { public string header { get; set; } public List<MenuModel> children { get; set; } } // Hämtar alla menyrader List<Models.MenuItem> dirtyMenu = Repositories.Menu.PopulateMenu(); List<Models.MenuModel> cleanMenu = new List<Models.MenuModel>(); public ActionResult Index() { // Går igenom alla nivå 1 länkar (dom som har referensID 0) foreach (Models.MenuItem item in dirtyMenu.FindAll(p => p.reference.Equals(0))) { cleanMenu.Add(PopulateMenu(item)); } } // Skriver in informationen i menylistan Models.MenuModel PopulateMenu(Models.MenuItem row) { Models.MenuModel cleanMenuItem = new Models.MenuModel(); cleanMenuItem.header = row.header; cleanMenuItem.children = new List<Models.MenuModel>(); // Kollar om det finns någon undermeny foreach (Models.MenuItem item in dirtyMenu.FindAll(p => p.reference.Equals(row.id))) { // Gör samma sak med denna nivå cleanMenuItem.children.Add(PopulateMenu(item)); } return cleanMenuItem; }
I menyklassen kan du ju stoppa in vilka egenskaper du vill, men detta gör att du kan bygga en oändligt stor lista med oändligt många undermenyer.
|