Let’s assume I have a Parent/child menu structure like below. How can I loop through the menu to build up the breadcrumbs?
So, for each menu item I would like to build up the breadcrumbs for all its parents. I added the breadcrumb properties in the menu to showcase what I would like to achieve.
Class
public class Menu
{
public string Text { get; set; }
public string Action { get; set; }
public string Area { get; set; }
public string Controller { get; set; }
public IEnumerable<Breadcrumb> Breadcrumb { get; set; }
public List<Menu> Children { get; set; }
}
Menu Implementation
Menu menu = new Menu();
menu.Action = "Index";
menu.Controller = "Home";
menu.Area = "";
menu.Text = "Employees";
//Breadcrumb = new [] { new Breadcrumb() { Text = "Employees", Action = "Index", Controller = "Home"} },
menu.Children = new List<Menu>
{
new Menu()
{
Text = "Payroll Processing",
//Breadcrumb = new [] { new Breadcrumb() { Text = "Payroll Processing" }, new Breadcrumb() { Text = "Employees", Action = "Index", Controller = "Home"} },
// No Route data
Children = new List<Menu>()
{
new Menu()
{
Action = "Index",
Controller = "SomeRandomControllerA",
Area = "Employees",
Text = "View",
//Breadcrumb = new [] { new Breadcrumb() { Text = "View", Action = "Index", Controller = "SomeRandomControllerA", }, new Breadcrumb() { Text = "Payroll Processing" }, new Breadcrumb() { Text = "Employees", Action = "Index", Controller = "Home"} }
},
new Menu()
{
Action = "Index",
Controller = "SomeRandomControllerB",
Area = "Employees",
Text = "View",
//Breadcrumb = new [] { new Breadcrumb() { Text = "View", Action = "Index", Controller = "SomeRandomControllerB", }, new Breadcrumb() { Text = "Payroll Processing" }, new Breadcrumb() { Text = "Employees", Action = "Index", Controller = "Home"} },
Children = new List<Menu>()
{
new Menu()
{
Action = "Index",
Controller = "SomeRandomControllerBA",
Area = "Employees",
Text = "ViewBA",
//Breadcrumb = new [] { new Breadcrumb() { Text = "ViewBA", Action = "Index", Controller = "SomeRandomControllerBA", }, new Breadcrumb() { Text = "View", Action = "Index", Controller = "SomeRandomControllerB", }, new Breadcrumb() { Text = "Payroll Processing" }, new Breadcrumb() { Text = "Employees", Action = "Index", Controller = "Home"} }
},
}
}
}
}
};