天天看點

ABP文檔 - 導航

文檔目錄

本節内容:

  • 建立菜單
    • 注冊導航供應器
  • 顯示菜單

每個web應用都有一些菜單用來在頁面/螢幕之間導航,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主要擁有一個唯一的name,一個本地化的display name,一個url和一個icon。

  • 一個菜單項,可能需要一個許可,用來把自己顯示給一個特殊的使用者(檢視授權文檔),requiredPermissionName屬性就是用在這種情況裡。
  • 一個菜單項,可能依賴于一個功能,featureDependency屬性就是用在這種情況裡。
  • 一個菜單項,可以定義一個customData(使用者資料)和order(順序位置)。

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

kid1412聲明:轉載請把此段聲明完整地置于文章頁面明顯處,并保留個人在部落格園的連結:http://www.cnblogs.com/kid1412/(可點選跳轉)。

繼續閱讀