文檔目錄
本節内容:
- 建立菜單
- 注冊導航供應器
- 顯示菜單
每個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/(可點選跳轉)。