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

點這裏進入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的類來定義一個菜單項。架構

假設咱們有一個這樣的主菜單:框架

  • Tasks
  • Reports
  • Administration 1 User Management 2 Role Management

由上可知,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架構設計交流羣      ABP架構設計交流2羣: 579765441ABP架構設計交流羣2

 

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

相關文章
相關標籤/搜索