ABP(現代ASP.NET樣板開發框架)系列之22、ABP展現層——導航欄設置


點這里進入ABP系列文章總目錄

 

基於DDD的現代ASP.NET開發框架--ABP系列之22、ABP展現層——導航欄設置

 

ABP是“ASP.NET Boilerplate Project (ASP.NET樣板項目)”的簡稱。

ABP的官方網站http://www.aspnetboilerplate.com

ABP在Github上的開源項目https://github.com/aspnetboilerplate

 


 

每一個WEB應用程序都有導航菜單,Abp也為用戶提供了通用的創建和顯示菜單方式。

創建菜單

一個應用程序可能包含不同的模塊,而每個模塊都可能有它自己的菜單項。在Abp中,需要創建一個派生自NavigationProvider的類來定義一個菜單項。

假設我們有一個這樣的主菜單:

  • Tasks
  • Reports
  • Administration 1 User Management 2 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,此外,菜單項可能需要與特定用戶權限相結合(相關權限系統正在開發,暫時還沒有說明文檔)。

InavigationProviderContext方法能夠獲取現有的菜單項、添加菜單或菜單項。因此,不同的模塊可以添加各自的菜單。

創建完成導航后,還需要在對應模塊預初始化時注冊到Abp配置文件中:

Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>(); 

顯示菜單

IuserNavigationManager可以注入、獲取和顯示菜單。可以在服務器端創建菜單。

Abp自動生成的javascript API使得用戶能夠在客戶端獲取菜單,對應的方法和對象在命名空間abp.nav中。例如,在客戶端使用abp.nav.menus.MainMenu可以用來獲取主菜單。

以上文檔展示了Abp如何給用戶創建和顯示菜單,你可以嘗試建立模版、查看源代碼以便更深入的學習。

 


 

希望更多國內的架構師能關注到ABP這個項目,也許這其中有能幫助到您的地方,也許有您的參與,這個項目可以發展得更好。

歡迎加QQ群:

ABP架構設計交流群:134710707 ABP架構設計交流群      ABP架構設計交流2群: 579765441ABP架構設計交流群2

 

點這里進入ABP系列文章總目錄

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM