點這裏進入ABP系列文章總目錄javascript
基於DDD的現代ASP.NET開發框架--ABP系列之2二、ABP展示層——導航欄設置
html
ABP是「ASP.NET Boilerplate Project (ASP.NET樣板項目)」的簡稱。java
ABP的官方網站:http://www.aspnetboilerplate.comgit
ABP在Github上的開源項目:https://github.com/aspnetboilerplategithub
每個WEB應用程序都有導航菜單,Abp也爲用戶提供了通用的建立和顯示菜單方式。服務器
一個應用程序可能包含不一樣的模塊,而每一個模塊均可能有它本身的菜單項。在Abp中,須要建立一個派生自NavigationProvider的類來定義一個菜單項。架構
假設咱們有一個這樣的主菜單:框架
由上可知,Administration菜單項有兩個子菜單項。對應的生成方法以下:ide
public class SimpleTaskSystemNavigationProvider : NavigationProvider { public override void SetNavigation(INavigationProviderContext context) { context.Manager.MainMenu .AddItem( new MenuItemDefinition( "Tasks", new LocalizableString("Tasks", "SimpleTaskSystem"), url: "/Tasks", icon: "fa fa-tasks" ) ).AddItem( new MenuItemDefinition( "Reports", new LocalizableString("Reports", "SimpleTaskSystem"), url: "/Reports", icon: "fa fa-bar-chart" ) ).AddItem( new MenuItemDefinition( "Administration", new LocalizableString("Administration", "SimpleTaskSystem"), icon: "fa fa-cogs" ).AddItem( new MenuItemDefinition( "UserManagement", new LocalizableString("UserManagement", "SimpleTaskSystem"), url: "/Administration/Users", icon: "fa fa-users", requiredPermissionName: "SimpleTaskSystem.Permissions.UserManagement" ) ).AddItem( new MenuItemDefinition( "RoleManagement", new LocalizableString("RoleManagement", "SimpleTaskSystem"), url: "/Administration/Roles", icon: "fa fa-star", requiredPermissionName: "SimpleTaskSystem.Permissions.RoleManagement" ) ) ); } }
MenuItemDefinition能夠有一個惟一的名字,一個用於本地化顯示的名字,一個url和一個icon,此外,菜單項可能須要與特定用戶權限相結合(相關權限系統正在開發,暫時尚未說明文檔)。學習
InavigationProviderContext方法可以獲取現有的菜單項、添加菜單或菜單項。所以,不一樣的模塊能夠添加各自的菜單。
建立完成導航後,還須要在對應模塊預初始化時註冊到Abp配置文件中:
Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>();
IuserNavigationManager能夠注入、獲取和顯示菜單。能夠在服務器端建立菜單。
Abp自動生成的javascript API使得用戶可以在客戶端獲取菜單,對應的方法和對象在命名空間abp.nav中。例如,在客戶端使用abp.nav.menus.MainMenu能夠用來獲取主菜單。
以上文檔展現了Abp如何給用戶建立和顯示菜單,你能夠嘗試創建模版、查看源代碼以便更深刻的學習。
但願更多國內的架構師能關注到ABP這個項目,也許這其中有能幫助到您的地方,也許有您的參與,這個項目能夠發展得更好。
歡迎加QQ羣:
ABP架構設計交流羣:134710707 ABP架構設計交流2羣: 579765441