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 屬性,可以在這種情況下使用
選單項可以定義一個 customData 和 order
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 校準方法: 部分校準 完全校準 沒有校