08 ABP Framework Blazor UI

ABP Framework Blazor UI

架構 overview

ABP Blazor UI 系統構建在 Blazorise 組件庫之上,為構建數據驅動應用提供結構化方法,包含 CRUD 操作、主題和本地化的一致模式。

模塊UI包
UI 組件
核心框架包
托管模型
Volo.Abp.Identity.Blazor
用戶/角色管理
Volo.Abp.TenantManagement.Blazor
租戶管理
Volo.Abp.PermissionManagement.Blazor
權限管理
Volo.Abp.FeatureManagement.Blazor
功能管理
AbpExtensibleDataGrid
數據網格組件
AbpCrudPageBase
CRUD基類
EntityActions
操作系統
Table Columns & Extensions
擴展框架
Volo.Abp.BlazoriseUI
核心UI框架
Volo.Abp.AspNetCore.Components.Web
Web組件基礎
AspNetCore.Components.Web.Theming
主題系統
Blazor Server
服務器端渲染
Blazor WebAssembly
客戶端渲染
Blazor Auto
混合渲染

核心組件和依賴

Blazor UI 系統以Volo.Abp.BlazoriseUI包為中心,與 Blazorise 組件庫集成,提供 ABP 特定功能。

關鍵類
ABP框架層
外部依賴
AbpCrudPageBase
AbpExtensibleDataGrid
EntityAction
EntityActions
TableColumn
Volo.Abp.BlazoriseUI
Volo.Abp.AspNetCore.Components.Web
Volo.Abp.Authorization
Volo.Abp.Ddd.Application.Contracts
Volo.Abp.Features
Volo.Abp.GlobalFeatures
Blazorise v1.8.0
Blazorise.DataGrid
數據網格組件
Blazorise.Snackbar
通知系統
Blazorise.Components
UI組件

CRUD 頁面系統

AbpCrudPageBase<T>類為在 Blazor 應用程序中實現創建、讀取、更新、刪除操作提供標準化模式,包括對分頁、排序、過濾和基于權限的操作的內置支持。

CRUD 頁面基類結構

AbpCrudPageBase類層次結構提供多個重載以適應不同場景:

類簽名用例
AbpCrudPageBase<TAppService, TEntityDto, TKey>使用默認請求 DTO 的基本 CRUD
AbpCrudPageBase<TAppService, TEntityDto, TKey, TGetListInput>自定義列表輸入 DTO
AbpCrudPageBase<TAppService, TEntityDto, TKey, TGetListInput, TCreateInput>自定義創建輸入 DTO
AbpCrudPageBase<TAppService, TEntityDto, TKey, TGetListInput, TCreateInput, TUpdateInput>完全自定義

關鍵屬性和方法

成員類型用途
AppServiceTAppService注入的應用服務
EntitiesIReadOnlyList<TListViewModel>當前頁面實體
NewEntityTCreateViewModel正在創建的實體
EditingEntityTUpdateViewModel正在編輯的實體
CreateModal, EditModalModalBlazorise 模態框引用
GetEntitiesAsync()Task從服務器加載實體
CreateEntityAsync()Task創建新實體
UpdateEntityAsync()Task更新現有實體
DeleteEntityAsync()Task刪除實體

示例實現

Identity 模塊的UserManagement組件演示了 CRUD 模式:

@inherits AbpCrudPageBase<IIdentityUserAppService, IdentityUserDto, Guid, GetIdentityUsersInput, IdentityUserCreateDto, IdentityUserUpdateDto>

數據網格和擴展系統

AbpExtensibleDataGrid<T>組件提供功能豐富的數據網格,內置對分頁、排序以及可擴展列和操作的支持。

數據網格組件架構

Extension Properties
Column System
AbpExtensibleDataGrid
Action System
ExtensionPropertiesRegex ExtraProperties[.*]
IHasExtraProperties
Value Converter Functions
TableColumn
TableColumnDictionary
Extension Property Columns
Custom Component Columns
AbpExtensibleDataGrid
Blazorise DataGrid
Loading Template RadarSpinner
Empty Template No Data Message
EntityAction
EntityActionDictionary
EntityActions
ActionType (Dropdown|Button)

表格列配置

TableColumn類提供廣泛的自定義選項:

屬性類型用途
Titlestring列標題文本
Datastring屬性路徑或字段名
Widthstring列寬(CSS)
Sortablebool啟用/禁用排序
Visiblebool顯示/隱藏列
ComponentType自定義組件類型
ValueConverterFunc<object, string>值轉換函數
DisplayFormatstring顯示格式字符串
ActionsList<EntityAction>關聯操作

實體操作系統

實體操作為網格行提供上下文操作:

屬性類型用途
Textstring操作顯示文本
ClickedFunc<object, Task>點擊事件處理程序
VisibleFunc<object, bool>可見性條件
Disabledbool啟用/禁用狀態
Colorobject操作按鈕顏色
Iconstring圖標標識符
ConfirmationMessageFunc<object, string>確認對話框文本

項目模板和托管模型

ABP 提供多個 Blazor 項目模板,支持不同的托管模型和架構模式。

模板結構

模板類型項目結構托管模型
Blazor Server具有服務器端渲染的單個項目Server
Blazor WebAssembly客戶端/服務器分離WebAssembly
Blazor WebApp混合自動渲染Auto
Blazor Tiered具有身份驗證服務器的多層Server/WebAssembly

關鍵包引用

模板包括跨托管模型的一致包引用:

<PackageReference Include="Blazorise.Bootstrap5" Version="1.8.0" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.8.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.5" />

模塊集成

ABP 模塊提供與核心 Blazor UI 系統無縫集成的 Blazor UI 組件。每個模塊遵循組件組織和依賴關系的一致模式。

模塊結構模式

IntegrationPoints
Dependencies
ModuleBlazorPackage
AbpNavigationOptions
AbpRouterOptions
AbpLocalizationOptions
[Module].Application.Contracts
Volo.Abp.BlazoriseUI
AspNetCore.Components.Web.Theming
Volo.Abp.AutoMapper
[Module].Blazor
Pages/
Module-specific pages
Components/
Reusable components
Navigation/
Menu contributors
AutoMapper Profile
AbpCrudPageBase
inheritance
AbpExtensibleDataGrid
usage

示例模塊實現

租戶管理模塊演示了標準模塊模式:

  1. 模塊類AbpTenantManagementBlazorModule配置依賴項和服務
  2. CRUD 頁面TenantManagement.razor繼承自AbpCrudPageBase
  3. 導航TenantManagementBlazorMenuContributor添加菜單項
  4. 本地化:與AbpTenantManagementResource集成

常見模塊依賴項

所有 Blazor 模塊共享以下依賴模式:

<ProjectReference Include="Volo.Abp.AspNetCore.Components.Web.Theming" />
<ProjectReference Include="Volo.Abp.AutoMapper" />
<PackageReference Include="[Module].Application.Contracts" />

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93086.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93086.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93086.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JUC學習筆記-----LinkedBlockingQueueConcurrentLinkedQueueCopyOnWriteArrayList

LinkedBlockingQueue基本的入隊出隊初始化public class LinkedBlockingQueue<E> extends AbstractQueue<E>implements BlockingQueue<E>, java.io.Serializable {// 靜態內部類 Node&#xff0c;用于存儲隊列元素及維護節點間關系static class Node<E>…

小杰python高級(six day)——pandas庫

1.數據可視化用于繪制 DataFrame 數據圖形&#xff0c;它允許用戶直接從 DataFrame 創建各種類型的圖表&#xff0c;而不需要使用其他繪圖庫&#xff08;底層實際上使用了 Matplotlib&#xff09;。&#xff08;1&#xff09;plotDataFrame.plot(*args, **kwargs)功能&#xff…

第十六屆藍橋杯青少組C++省賽[2025.8.9]第二部分編程題(1 、慶典隊列)

參考程序&#xff1a;#include <iostream> using namespace std;int main() {int n, A;cin >> n >> A; // 輸入&#xff1a;n 和 A&#xff0c;用空格隔開cout << n / A; // 整數相除&#xff0c;自動向下取整return 0; }

C++進階:智能指針

目錄1. RAII與智能指針2. C庫中的智能指針2.1 智能指針auto_ptr2.2 智能指針unique_ptr2.3 智能指針shared_ptr3. shared_ptr的循環引用4. 智能指針的定值刪除器1. RAII與智能指針 上一篇文章學習了異常相關的知識&#xff0c;其中遺留了一個異常安全相關的問題。那就是異常的拋…

Tkinter 實現按鈕鼠標懸浮提示:兩種方案(繼承Frame與不繼承)

在 Tkinter 桌面應用開發中&#xff0c;為按鈕添加“鼠標懸浮提示”是提升用戶體驗的常用功能——無需點擊&#xff0c;只需將鼠標挪到按鈕上方&#xff0c;就能自動顯示按鈕功能說明。本文將詳細介紹兩種實現方案&#xff1a;不繼承 Frame 類&#xff08;快速簡潔版&#xff0…

20250814 最小生成樹總結

引子 啊啊額&#xff0c;從一張圖里抽出幾條邊&#xff0c;組成一棵樹&#xff0c;無環n?1n-1n?1條邊&#xff0c;就是生成樹。那么邊權和最小的生成樹就叫最小生成樹&#xff0c;最大生成樹同理。 kruskal最小生成樹 要求kruskal最小生成樹&#xff0c;我們首先用結構體數組…

數據大集網:實體店獲客引流的數字化引擎,解鎖精準拓客新密碼?

?在實體店面臨流量焦慮、獲客成本攀升的當下&#xff0c;實體店獲客引流工具的重要性愈發凸顯。如何在激烈的市場競爭中精準觸達目標客戶、構建可持續的客流增長模式&#xff1f;數據大集網憑借其創新的智能獲客體系與全鏈路服務能力&#xff0c;正成為萬千實體店突破增長瓶頸…

nginx --ssl證書生成mkcert

github https://github.com/FiloSottile/mkcert/releases網盤下載地址 https://pan.baidu.com/s/1XI0879pqu7HXZMnmQ9ztaw 提取碼: 1111windows使用示例

守拙以致遠:個人IP的長青之道|創客匠人

2025年被認為是AI應用全面爆發的一年。各種人工智能工具在寫作、制圖、剪輯等領域廣泛使用&#xff0c;大大提升了個人和團隊的工作效率。對于個人IP而言&#xff0c;這類工具的出現確實帶來了新的機會&#xff0c;但也伴隨著一種現象——一些人開始過度依賴甚至神化AI&#xf…

USB 3.0 LTSSM 狀態機

USB2.0在電源供應后&#xff0c;通過Pull Up D-來決定枚舉LS&#xff0c;Pull Up D有一個USB高速握手過程&#xff0c;來決定HS FS。USB3.0則會通過鏈路訓練&#xff08;Link Training&#xff09;&#xff0c;來準備USB3.0通信。每當我們插上USB線的時候&#xff0c;對于3.0的…

MySQL窗口函數與PyMySQL以及SQL注入

MySQL窗口函數與PyMySQL實戰指南&#xff1a;從基礎到安全編程 引言 在數據處理和分析領域&#xff0c;MySQL作為最流行的關系型數據庫之一&#xff0c;其窗口函數功能為數據分析提供了強大的支持。同時&#xff0c;Python作為數據分析的主要語言&#xff0c;通過PyMySQL庫與My…

高級項目——基于FPGA的串行FIR濾波器

給大家安利一個 AI 學習神站&#xff01;在這個 AI 卷成紅海的時代&#xff0c;甭管你是硬核開發者還是代碼小白&#xff0c;啃透 AI 技能樹都是剛需。這站牛逼之處在于&#xff1a;全程用 "變量名式" 幽默 生活化類比拆解 AI&#xff0c;從入門到入土&#xff08;啊…

JPrint免費的Web靜默打印控件:PDF打印中文亂碼異常解決方案

文章目錄JPrint是什么&#xff1f;中文亂碼&#xff08;Using fallback font xxx for xxxx&#xff09;1.字體嵌入2.客戶機字體安裝開源地址相關目錄導航使用文檔端口號修改代理使用場景打印服務切換中文亂碼解決方案 JPrint是什么&#xff1f; JPrint是一個免費開源的可視化靜…

MFT 在零售行業的實踐案例與場景:加速文件集成與業務協作的高效方案

零售行業競爭激烈、數字化轉型迭代迅速&#xff0c;業務對數據與檔案的傳輸、處理和整合要求極高。無論是新品上市市場數據&#xff0c;還是供應鏈物流單據&#xff0c;集成方式不論是通過API或是檔案傳輸, 對于傳輸的穩定性,安全性與性能, 都會直接影響決策效率與顧客體驗。MF…

OSG+Qt —— 筆記1 - Qt窗口加載模型(附源碼)

?? OSG/OsgEarth 相關技術、疑難雜癥文章合集(掌握后可自封大俠 ?_?)(記得收藏,持續更新中…) OSG+Qt所用版本皆為: Vs2017+Qt5.12.4+Osg3.6.5+OsgQt(master) 效果 代碼(需將cow.osg、reflect.rgb拷貝至工程目錄下) OsgForQt.ui main.cpp

開源安全云盤存儲:Hoodik 實現端到端數據加密,Docker快速搭建

以下是對 Hoodik 的簡單介紹&#xff1a; Hoodik 是一個使用 Rust 和 Vue 開發的輕量級自托管安全云存儲解決方案采用了非對稱RSA密鑰對和AES混合加密策略&#xff0c;從文件存儲加密到數據鏈路加密&#xff0c;全程保證數據安全支持Docker一鍵私有部署&#xff0c;數據和服務…

[C++] Git 使用教程(從入門到常用操作)

1. Git 簡介 Git 是一款分布式版本控制系統&#xff0c;用來跟蹤文件變化、協作開發、管理項目版本。 它是開源的&#xff0c;由 Linus Torvalds 在 2005 年開發&#xff0c;廣泛用于開源與企業項目中。 2. 安裝 Git Windows 前往 Git 官網 下載并安裝。 安裝時建議勾選 Git…

實盤回測一體的期貨策略開發:tqsdk獲取歷史數據并回測,附python代碼

原創內容第969篇&#xff0c;專注AGI&#xff0c;AI量化投資、個人成長與財富自由。 星球好多同學希望說說實盤&#xff0c;我們就從實盤開始吧。 我們選擇tqsdk給大家講解&#xff0c;tqsdk支持免費注冊&#xff0c;使用模擬賬戶&#xff0c;歷史和實時數據&#xff0c;方便…

大模型推理框架vLLM 中的Prompt緩存實現原理

背景&#xff1a;為什么需要Prompt緩存模塊&#xff1f;在大模型問答多輪對話應用場景中&#xff0c;不同請求的 Prompt 往往有相同的前綴&#xff0c;比如&#xff1a;第一次問答&#xff1a;你是一名專業的電子產品客服&#xff0c;負責回答客戶關于手機產品的咨詢。請根據以…

Python之Django使用技巧(附視頻教程)

概述 Django 是一個高級的 Python Web 框架&#xff0c;遵循 “batteries-included”&#xff08;內置電池&#xff09;理念&#xff0c;提供了構建 Web 應用所需的大部分組件&#xff0c;讓開發者可以專注于業務邏輯而不是底層細節。視頻教程&#xff1a;https://pan.quark.cn…