diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs index 857054d53a..e5b169486f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs @@ -7,7 +7,7 @@ public BreadCrumb BreadCrumb { get; } public string MenuItemName { get; set; } - + public ContentLayout() { BreadCrumb = new BreadCrumb(); diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenu.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenu.cs index d723aeec44..fce412c22f 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenu.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenu.cs @@ -33,6 +33,7 @@ namespace Volo.Abp.UI.Navigation /// /// Can be used to store a custom object related to this menu. + /// TODO: Conver to dictionary! /// [CanBeNull] public object CustomData { get; set; } diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/HasMenuItemsExtensions.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/HasMenuItemsExtensions.cs new file mode 100644 index 0000000000..fe69b80fe9 --- /dev/null +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/HasMenuItemsExtensions.cs @@ -0,0 +1,28 @@ +using JetBrains.Annotations; +using Volo.Abp.UI.Navigation; + +namespace Volo.Abp.Ui.Navigation +{ + public static class HasMenuItemsExtensions + { + [CanBeNull] + public static ApplicationMenuItem FindMenuItem(this IHasMenuItems container, string menuItemName) + { + foreach (var menuItem in container.Items) + { + if (menuItem.Name == menuItemName) + { + return menuItem; + } + + var subItem = FindMenuItem(menuItem, menuItemName); + if (subItem != null) + { + return subItem; + } + } + + return null; + } + } +}