1. 程式人生 > >ABP官方文檔翻譯 6.4 導航

ABP官方文檔翻譯 6.4 導航

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屬性。
  • 菜單項可以定義一個customDataorder。

  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 導航