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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…