文檔目錄
本節內容:
每個web應用都有一些菜單用來在頁面/屏幕之間導航,ABP提供了一個通用的基礎框架創建並顯示菜單給用戶。
創建菜單
一個應用可能由不同模塊組成,每個模塊可以有它自己的菜單項,為了定義菜單項,我們需要創建一個繼承於NavigationProvider的類。
假設有一個如下所示的主菜單:
這裡,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主要擁有一個唯一的name,一個本地化的display name,一個url和一個icon。
INavigationProviderContext擁有獲取菜單項、添加菜單和菜單項的方法,因此,不同模塊可以添加自己的項到菜單裡。
一個應用裡可能有一個或多個菜單,context.Manager.MainMenu指向默認的主菜單,我們可以用context.Manager.Menus屬性創建並添加更多的菜單。
注冊導航供應器
在創建完導航供應器後,應該在我們模塊的PreInitialize事件裡注冊它:
Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>();
顯示菜單
我們可以注入IUserNavigationManager,用它來獲取菜單項並顯示給用戶,因此我們可以在服務端創建菜單。
ABP自動生成一個javascript api,在客戶端裡,用它獲取菜單和項 ,abp.nav命名空間裡的方法和對象就是用來支持這些操作,例如:可以用abp.nav.menus.MainMenu獲取應用的主菜單,因此我們也可以在客戶端創建菜單。
ABP模板使用這個系統為用戶創建並顯示菜單。你可用模板創建一個項目並查看源碼,獲取更多信息。
kid1412附:英文原文:http://www.aspnetboilerplate.com/Pages/Documents/Navigation