I can not put sub-items on the front site menu (FrontEndNavigationProvider). I'm putting the same name all the items, this leaves all selected. I need only the parent item and the selected item be selected be marked
.AddItem(new MenuItemDefinition(
"Frontend.Solucao",
new FixedLocalizableString("Solução")
).AddItem(new MenuItemDefinition(
"Frontend.Solucao",
new FixedLocalizableString("Guarda Móveis"),
url: "/self-storage/guarda-moveis")
).AddItem(new MenuItemDefinition(
"Frontend.Solucao",
new FixedLocalizableString("Guarda Documentos"),
url: "/self-storage/guarda-documentos")
).AddItem(new MenuItemDefinition(
"Frontend.Solucao",
new FixedLocalizableString("Guarda Estoque"),
url: "/self-storage/guarda-estoque-para-empresas")
).AddItem(new MenuItemDefinition(
"Frontend.Solucao",
new FixedLocalizableString("Guarda Volumes"),
url: "/self-storage/guarda-volumes")
).AddItem(new MenuItemDefinition(
"Frontend.Solucao",
new FixedLocalizableString("Depósito Privativo"),
url: "/self-storage/deposito-privativo")
).AddItem(new MenuItemDefinition(
"Frontend.Solucao",
new FixedLocalizableString("Galpões Modulares"),
url: "/self-storage/galpoes-modulares")
).AddItem(new MenuItemDefinition(
"Frontend.Solucao",
new FixedLocalizableString("Guarda Volumes"),
url: "/self-storage/guarde-objetos-reformas-ampliacoes")
).AddItem(new MenuItemDefinition(
"Frontend.Solucao",
new FixedLocalizableString("Guarda Volumes 2"),
url: "/self-storage/startups-pme")
))
3 Answer(s)
-
0
Hi,
menu name should be unique (you named 'Frontend.Solucao' for all). Can you try tof fix it?
-
0
Yes, but dont set primary node
.AddItem(new MenuItemDefinition( "Frontend.Solucao1", new FixedLocalizableString("Solução") ).AddItem(new MenuItemDefinition( "Frontend.Solucao2", new FixedLocalizableString("Guarda Móveis"), url: "/self-storage/guarda-moveis") ).AddItem(new MenuItemDefinition( "Frontend.Solucao3", new FixedLocalizableString("Guarda Documentos"), url: "/self-storage/guarda-documentos") ).AddItem(new MenuItemDefinition( "Frontend.Solucao4", new FixedLocalizableString("Guarda Estoque"), url: "/self-storage/guarda-estoque-para-empresas") ).AddItem(new MenuItemDefinition( "Frontend.Solucao5", new FixedLocalizableString("Guarda Volumes"), url: "/self-storage/guarda-volumes") ).AddItem(new MenuItemDefinition( "Frontend.Solucao6", new FixedLocalizableString("Depósito Privativo"), url: "/self-storage/deposito-privativo") ).AddItem(new MenuItemDefinition( "Frontend.Solucao7", new FixedLocalizableString("Galpões Modulares"), url: "/self-storage/galpoes-modulares") ).AddItem(new MenuItemDefinition( "Frontend.Solucao8", new FixedLocalizableString("Guarda Volumes"), url: "/self-storage/guarde-objetos-reformas-ampliacoes") ).AddItem(new MenuItemDefinition( "Frontend.Solucao9", new FixedLocalizableString("Guarda Volumes 2"), url: "/self-storage/startups-pme") ))
-
0
Hi,
You can implement a custom solution like this. name your main menu item from "Frontend.Solucao1" to "Frontend.Solucao" and in _Header.cshtml instead of checking the equality of currentPageName like this
menuItem.Name == Model.CurrentPageName ? "active" : ""
change it to
menuItem.Name == Model.CurrentPageName || Model.CurrentPageName.StartsWith(menuItem.Name) ? "active" : ""
In this way both submenuItem and parent menu item will be selected. But you have to be careful when naming your menu items according to this logic.
And of course you have to set ViewBag.CurrentPageName to page name in your cshtml files.