@model Microsoft.AspNetCore.Mvc.RazorPages.PageModel @functions { List BuildMenu() { List Menu = new List(); Menu.Add(new MenuPageItem() { FriendlyName = "Suche und Briefauswahl", DefaultRoute = "/Index" }); Menu.Add(new MenuPageItem() { FriendlyName = "Briefansicht", DefaultRoute = "/Briefe" }); Menu.Add(new MenuSubMenuItem() { FriendlyName = "Register", DefaultRoute = "/Supplementa/Register", menuPages = new List() { new MenuPageItem() { FriendlyName = "Register", DefaultRoute = "/Supplementa/Register" }, new MenuPageItem() { FriendlyName = "Bibelstellenregister", DefaultRoute = "/Supplementa/Bibelstellen" }, new MenuPageItem() { FriendlyName = "Forschungsbibliographie", DefaultRoute = "/Supplementa/Forschung" } } }); Menu.Add(new MenuSubMenuItem() { FriendlyName = "Zur Edition", DefaultRoute = "/Edition/Richtlinien", menuPages = new List() { new MenuPageItem() { FriendlyName = "Kontakt", DefaultRoute = "/Edition/Kontakt" }, new MenuPageItem() { FriendlyName = "Mitwirkende", DefaultRoute = "/Edition/Mitwirkende" }, new MenuPageItem() { FriendlyName = "Editionsrichtlinien", DefaultRoute = "/Edition/Richtlinien" }, new MenuPageItem() { FriendlyName = "Editionsgeschichte", DefaultRoute = "/Edition/Editionsgeschichte" }, new MenuPageItem() { FriendlyName = "Werkausgabe", DefaultRoute = "/Edition/Werkausgabe" } } }); return Menu; } void MarkActive(List Menu) { var path = ViewContext.HttpContext.Request.Path; if (path == "/") { Menu.First().Active = true; return; } foreach (var item in Menu) { if (item is MenuPageItem) { var comparing = path.Value.Length > item.DefaultRoute.Length ? path.Value.Substring(0, item.DefaultRoute.Length) : path.Value; if (item.DefaultRoute == comparing) { item.Active = true; return; } } else if (item is MenuSubMenuItem) { var submenu = (MenuSubMenuItem)item; foreach (var sub in submenu.menuPages) { var comparing = path.Value.Length > sub.DefaultRoute.Length ? path.Value.Substring(0, sub.DefaultRoute.Length) : path.Value; if (sub.DefaultRoute == comparing) { sub.Active = true; item.Active = true; return; } } } } } string setAct(MenuItem item) { if (item.Active) return "is-active"; else return ""; } } @{ var Menu = BuildMenu(); MarkActive(Menu); } @if(ViewContext.HttpContext.Request.Path == "/" || ViewContext.HttpContext.Request.Path.StartsWithSegments("/Index")) { }