程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> <<ABP文檔>> 導航,abp文檔導航

<<ABP文檔>> 導航,abp文檔導航

編輯:關於.NET

<<ABP文檔>> 導航,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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved