标签:
abp中MenuDefinition封装了导航栏上的主菜单的属性,MenuItemDefinition则封装了子菜单的属性,子菜单可以引用其他子菜单构成一个菜单树。
MenuDefinitio成员如下:
public object CustomData { get; set; }//自定义数据 public ILocalizableString DisplayName { get; set; }//表示本地化字符串 public IList<MenuItemDefinition> Items { get; set; }//子级菜单集合 public string Name { get; }//菜单名称 public MenuDefinition AddItem(MenuItemDefinition menuItem);//子菜单添加方法
MenuItemDefinition成员如下:
public object CustomData { get; set; }//自定义数据 public ILocalizableString DisplayName { get; set; }//表示本地化字符串 public IFeatureDependency FeatureDependency { get; set; }//功能特性 public string Icon { get; set; }//菜单图标 public bool IsLeaf { get; }//是否有子菜单 public virtual IList<MenuItemDefinition> Items { get; }//子菜单 public string Name { get; }//菜单名称 public int Order { get; set; }//排序 public string RequiredPermissionName { get; set; }//权限名称 public bool RequiresAuthentication { get; set; }//权限验证如果通过验证显示此菜单否则不可见 public string Url { get; set; }//URL public MenuItemDefinition AddItem(MenuItemDefinition menuItem);//添加子菜单
有了以属性并了解其作用我们可以方便自定任何菜单,在常规开发中我们可能需要从数据库,xml等数据源中加载一些动态菜单来满足我们的系统要求,有了以上对象我们可以方便的添加菜单!
设置菜单代码如下:
public class AppNavigationProvider : NavigationProvider { public override void SetNavigation(INavigationProviderContext context) { #region 静态菜单 context.Manager.MainMenu .AddItem(new MenuItemDefinition( AppPageNames.Host.Tenants, L("HostDashboardMenu"), url: "host_dashboard", icon: "menu-icon fa fa-home", requiredPermissionName: PermissionNames.Pages_Host_Dashboard, order: 1 ) ); #endregion #region 动态菜单 var project=new MenuItemDefinition( AppPageNames.Common.Project, L("ProjectMenu"), url: "roles", icon: "menu-icon fa fa-briefcase", requiredPermissionName: PermissionNames.Pages_Administration_Projects, order: 5 ); //这里模拟从数据库加载数据 for (int i = 1; i <= 10; i++) { project.AddItem(new MenuItemDefinition( "p1", L("项目" + i), url: "project", icon: "menu-icon fa fa-tasks", requiredPermissionName: PermissionNames.Pages_Administration_Projects, customData: i )); } context.Manager.MainMenu.AddItem(project); #endregion } private static ILocalizableString L(string name) { return new LocalizableString(name, DataCenterConsts.LocalizationSourceName); } }
效果如下
标签:
原文地址:http://www.cnblogs.com/wangleicode/p/5392838.html