1. 程式人生 > >ABP官方文件(三十五)【導航欄】

ABP官方文件(三十五)【導航欄】

6.4 ABP表現層 - 導航欄

每一個WEB應用程式都有導航選單,Abp也為使用者提供了通用的建立和顯示選單方式。

6.4.1 建立選單

一個應用程式可能包含不同的模組,而每個模組都可能有它自己的選單項。在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,此外:

  • 選單項可能需要與特定使用者許可權相結合顯示選單(請檢視許可權驗證文件),requiredPermissionName 屬性,可以在這種情況下使用

  • 選單項可以依賴於功能項featureDependency 屬性,可以在這種情況下使用

  • 選單項可以定義一個 customDataorder

InavigationProviderContext方法能夠獲取現有的選單項、新增選單或選單項。因此,不同的模組可以新增各自的選單。

在應用程式中可能有一個或者多個選單,context.Manager.MainMenu 是預設主選單的引用。我們可以使用 context.Manager.Menus 屬性建立和新增更多的選單。

註冊導航提供器

建立完成導航後,我們應該在ABP的 PreInitialize 配置它:

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

6.4.2 顯示選單

IUserNavigationManager 可以注入、獲取和顯示選單。因此,我們可以在伺服器端建立選單。

Abp自動生成的 javascript API 使得使用者能夠在客戶端獲取選單,對應的方法和物件在名稱空間 abp.nav 中。例如,在客戶端使用 abp.nav.menus.MainMenu 可以用來獲取主選單。所以我們可以在客戶端建立選單。

ABP模板使用該系統為使用者建立和顯示選單。請試著建立模板並且檢視原始碼以瞭解更多資訊。

相關推薦

ABP官方()導航

6.4 ABP表現層 - 導航欄 每一個WEB應用程式都有導航選單,Abp也為使用者提供了通用的建立和顯示選單方式。 6.4.1 建立選單 一個應用程式可能包含不同的模組,而每個模組都可能有它自己的選單項。在Abp中,需要建立一個派生自Navigati

ABP官方(七)Javascript API

6.6 ABP表現層 - Javascript API 6.6.1 簡介 ABP提供了一系列的物件和函式,使用這些物件和函式使得指令碼開發更容易且標準化。 下面是ABP中的指令碼API列表。點選標題可以看到詳細的使用手冊。 使用AJAX呼叫伺

ABP官方(六)異常處理

6.5 ABP表現層 - 異常處理 6.5.1 簡介 該文件只是針對ASP.NET MVC 以及Web API。如果你對ASP.NET Core也感興趣,請參考ASP.NET Core文件。 在 web 應用程式中,異常通常是在 MVC Con

ABP官方(八)AJAX API

6.6 ABP表現層 - AJAX API 6.6.2.1 AJAX操作問題 現代的應用經常會使用AJAX,尤其是單頁應用,幾乎是和伺服器通訊的唯一手段,執行AJAX通常會有以下步驟: 基本上:為了執行一個AJAX呼叫,首先你要在客戶端提供一個可供請

ABP官方(二)資料傳輸物件驗證

4.3 ABP應用層 - 資料傳輸物件驗證 應用程式的輸入首先應該被驗證是否有效。輸入的資料能夠被使用者或者其它應用傳送。在web應用中,驗證通常被實現兩次:客戶端和伺服器端。客戶端驗證的實現主要用於使用者體驗。首先,最好是在客戶端檢驗表單並且向用戶展示無效的

ABP官方(二九)Web API Controllers

5.1 ABP分散式服務 ASP.NET Web API Controllers 5.1.1 簡介 ABP已經把 ASP.NET Web API Controllers 整合到了 Abp.Web.Api,你只要通過Nuget安裝它。正如你一直那樣做得,你

ABP官方(四二)CSRF和XSRF保護

6.9 CSRF和XSRF保護 6.9.1 簡介 Cross-Site Request Forgery (CSRF) 跨站請求偽造是一種攻擊,發生在具有惡意的網站,email,blog,即時訊息,或者程式導致使用者的web瀏覽器在一個受信用的網站去執行了

ABP官方(二四)資料傳輸物件

4.2 ABP應用層 - 資料傳輸物件 資料傳輸物件(Data Transfer Objects)用於應用層和展現層的資料傳輸。 展現層傳入資料傳輸物件(DTO)呼叫一個應用服務方法,接著應用服務通過領域物件執行一些特定的業務邏輯並且返回DTO給展現層。這樣

ABP官方()多租戶

1.5 ABP總體介紹 - 多租戶 1.5.1 什麼是多租戶 維基百科:“軟體多租戶是指一個軟體架構的例項軟體執行在一個伺服器上,但存在多個租戶。租戶是一組共享一個公共的使用者訪問特定許可權的軟體例項。多租戶架構,軟體應用程式旨在提供每個租戶專用的例項包

ABP官方(七)倉儲

3.3 ABP領域層 - 倉儲 倉儲定義:“在領域層和資料對映層的中介,使用類似集合的介面來存取領域物件”(Martin Fowler)。 實際上,倉儲被用於領域物件在資料庫上的操作(實體Entity和值物件Value types)。一般來說,我們針對不同的

ABP官方(一)入門介紹

1.1 ABP總體介紹 - 入門介紹 ABP是“ASP.NET Boilerplate Project (ASP.NET樣板專案)”的簡稱。 ASP.NET Boilerplate是一個用最佳實踐和流行技術開發現代WEB應用程式的新起點,它旨在成為一個通用的

ABP官方(十三)物件之間的對映

2.7 ABP公共結構 - 物件之間的對映 2.7.1 簡介 我們通常需要在近似的物件之間進行對映處理。這是一個重複且枯燥無味的工作,通常來說兩個需要相互對映的物件之間有近似的或者相同的屬性。思考一下這樣一個案例:應用服務的方法: public c

ABP官方(二十三)應用服務

4.1 ABP應用層 - 應用服務 應用服務用於將領域(業務)邏輯暴露給展現層。展現層通過傳入DTO(資料傳輸物件)引數來呼叫應用服務,而應用服務通過領域物件來執行相應的業務邏輯並且將DTO返回給展現層。因此,展現層和領域層將被完全隔離開來。在一個理想的層級專

OpenCV-Python官方——在OpenCV中繪製函式

在OpenCV中繪製函式 目標 · 學習使用OpenCV繪製不同的幾何形狀 · 您將學習以下函式:cv2.line(),cv2.circle(),cv2.rectangle(),cv2.ellipse(),cv2.putText()等。 程式碼  &nbs

Android [Camera 原始碼] 版本支援(Version Support) Google官方四)

Google原始碼網地址連結:https://source.android.com/devices/camera 該Google Camera的文件為系列文章,文章列表: overview Camera3 HAL Subsystem Metadata and Con

Hyperledger Fabric 1.3 官方翻譯()教程 (Tutorials)

構建你的第一個網路(Building Your First Network) These instructions have been verified to work against the latest stable Docker images and t

Adopt Open JDK官方()對Adopt OpenJDK的初步瞭解

譯文地址 譯者:鄭玉婷 3. 對Adopt OpenJDK的初步瞭解 3.1 OpenJDK 從這些地方瞭解它: 3.2 OCA(Oracle貢獻者協議)- 籤OCA 用途在這裡(和為什麼你需要了解它) 具體內容,總體瞭解OCA 3.3 Adopt OpenJDK和Adop

Adopt Open JDK官方

編譯過程效能優化的命令列引數 AdoptOpenJDK wiki的一個連結,提供了幾個怎麼提高編譯過程效能的例子。 編譯 jcov 專案首頁(專案資訊, 編譯指南, 其他…) 原始碼: 快速編譯指南 $ hg clone http://hg.openjdk.java.net/code

《HttpClient 官方》第章 Fluent API

原文連結  譯者[white] 第五章:流式 API 5.1 易用 API 介面 4.2版本的 HttpClient 帶來了一組非常容易使用的流式 API(Fluent API) 介面。暴露的流式API(Fluent API) 介面中僅僅是 HttpClient 最基本的一些功能,這些介面是在

ESP32 官方四)RF 校準

RF 校準 RF 校準 部分校準 完全校準 沒有校準 PHY 初始化資料 RF 校準 ESP32 在 RF 初始化期間支援三種 RF 校準方法: 部分校準 完全校準 沒有校