ABP官方文檔翻譯 6.4 導航
阿新 • • 發佈:2017-06-30
tro gist perm 目的 name blog 註入 chart 客戶端
導航
- 創建菜單
- 註冊導航提供者
- 顯示菜單
每一個網絡應用都會有一些菜單用來在pages/screens之間導航。ABP提供了通用的基礎設施來創建並顯示菜單。
創建菜單
應用可以由不同的模塊組成,每一個模塊都有自己的菜單項。為了定義菜單項,我們需要創建一個繼承自NavigationProvider的類。
假定,我們有一個如下所示的主菜單:
- Tasks
- Reports
- Administration
- User management
- Role management
這裏,Administration菜單項有兩個子菜單項。創建這個菜單的示例導航提供者類如下所示:
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。
- 菜單項可能需要一個權限來控制顯示給特定的用戶(參見授權文檔)。在這種情況下可以使用requiredPermissionName屬性。
- 菜單項可以依賴於特征。這種情況下可以使用featureDependency屬性。
- 菜單項可以定義一個customData和order。
INavigationProviderContext有獲取已存在菜單項、添加菜單和菜單項的方法。因此,不同的模塊可以在菜單上添加他們自己的菜單項。
在應用中可能有一個或多個菜單。context.Manager.MainMenu引用默認的主菜單。我們可以使用context.Manager.Menus屬性創建、添加更多菜單。
註冊導航提供者
創建導航提供者之後,我們需要在模塊的PreInitialize事件中註冊它到ABP的配置中:
Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>();
顯示菜單
IUserNavigationManager可以註入使用來獲取菜單項並顯示給用戶。因此,我們可以在服務端創建菜單。
ABP自動生成一個javascript API在客戶端來獲取菜單及項。在abp.nav命名空間下的方法和對象可以用來實現此目的。例如,abp.nav.menus.MainMenu用來獲取應用的主菜單。因此,我們可以在客戶端創建菜單。
ABP模板使用這個系統來創建並顯示菜單給用戶。嘗試創建一個模板,查看源代碼以了解更多。
返回主目錄
ABP官方文檔翻譯 6.4 導航