ant-design-blazor 的 Tag 标签组件基本用法与关闭事件详解
前端UI组件设计系统【免费下载链接】ant-design-blazor基于 Ant Design 与 Blazor 的前端组件库。让开发者解放生产力实现更大价值。项目地址https://gitcode.com/ant-design-blazor/ant-design-blazor点击查看免费下载导读本文聚焦 ant-design-blazor 组件库中的Tag标签组件围绕其最基础的用法展开如何在页面中渲染一个标签、如何通过Closable将其变为可关闭标签以及可关闭标签背后OnClose与OnClosing两个事件各自的触发时机与分工。读完本文你将能够在 Blazor 项目中独立完成标签渲染、点击关闭、关闭前拦截确认、受控显隐等一系列实战场景并理解这些行为在组件源码中的真实实现链路。一、基本用法一行代码渲染一个标签Tag属于数据展示类组件官方定位是进行标记和分类的小标签适合按属性或维度打标、做内容分类。组件文档 中给出的基础示例如下TagTag 1/Tag渲染结果就是一个标准样式的小标签对应 官方演示代码。标签内容通过ChildContentRenderFragment类型传入因此你不仅可以放纯文本还可以放任意其他组件或 HTML 元素Tag a href...Link/a /Tag从底层实现看Tag继承自AntDomComponentBase最终输出为一个span元素其基础 CSS 类为ant-tag。在 Tag.razor 中可以看到完整的渲染结构span classClassMapper.Class style_style idId refRef onclickClickTag if (IconTemplate ! null) { IconTemplate } else if (!string.IsNullOrEmpty(Icon)) { Icon TypeIcon ThemeIconTheme/Icon } ChildContent if (Closable) { Icon Typeclose TabIndex-1 OnClickCloseTag StopPropagationtrue / } /span这一段代码其实已经透露了Tag的全部行为脉络可选的自定义图标模板IconTemplate、可选的内置图标IconIconTheme、核心内容ChildContent以及当Closable为true时追加渲染的一个关闭图标。样式方面组件通过 index.less 提供内边距、边框、圆角、悬停过渡等视觉效果。组件测试 TagTests.razor 中的Renders_basic_tag用例印证了基础渲染结果var cut Context.Render(AntDesign.TagTag 1/AntDesign.Tag); cut.MarkupMatches(span classant-tag ant-tag-default id:ignoreTag 1/span);默认情况下即使不指定Color也会输出ant-tag-default类即默认配色。二、可关闭标签Closable 与两个关闭事件在Tag上添加布尔参数Closable默认值false见 Tag.razor.cs标签右侧就会多出一个关闭图标点击后标签从页面移除Tag ClosableTag 2/Tag可关闭标签拥有两个事件它们名字相近但职责完全不同事件参数类型触发时机典型用途OnClosingCloseEventArgsMouseEventArgs点击关闭图标后、真正移除之前拦截/取消关闭、播放退场动画OnCloseMouseEventArgs确认关闭并移除之后执行删除数据、写日志等收尾动作这个先OnClosing、后OnClose的顺序并非约定俗成而是被源码硬编码的。查看 Tag.razor.cs 中的CloseTag方法private async Task CloseTag(MouseEventArgs e) { var closeEvent new CloseEventArgsMouseEventArgs(e); if (OnClosing.HasDelegate) { await this.OnClosing.InvokeAsync(closeEvent); } if (closeEvent.Cancel) { return; } this._closed true; if (OnClose.HasDelegate) { await this.OnClose.InvokeAsync(e); } }调用链非常清晰先触发OnClosing若closeEvent.Cancel为true则直接return标签保持可见OnClose也不会被触发只有未被取消时才会置_closed true并触发OnClose。而在 Tag.razor 的顶层正是通过if (!_closed)控制整个span的渲染_closed置位后标签随即从 DOM 中消失。值得注意的是关闭图标使用StopPropagationtrue点击关闭按钮不会冒泡触发标签自身的OnClick——这一点也有对应的测试用例Click_on_close_does_not_invoke_OnClick加以验证。三、用 OnClosing 拦截关闭Cancel 属性实战CloseEventArgsT是组件库通用的事件参数类型定义在 CloseEventArgs.cspublic class CloseEventArgsT where T : EventArgs { public CloseEventArgs(T eventArgs) { EventArgs eventArgs; } public T EventArgs { get; set; } /// summary /// If true, the component will be prevented from closing /// /summary public bool Cancel { get; set; } }其中Cancel属性专用于条件性阻止关闭。基础演示中通过OnClosing实现禁止关闭的写法Tag Closable OnClosingPreventDefaultPrevent Default/Tag code { void PreventDefault(CloseEventArgsMouseEventArgs closeArgs) { closeArgs.Cancel true; } }只要在OnClosing里把Cancel置为true无论OnClose是否绑定标签都不会被移除。这一行为在 TagTests.razor 的Prevents_tag_closing用例中得到验证点击关闭图标后标签的完整 DOM 结构依然存在。更贴近真实业务的是关闭前弹窗确认模式参考 Event.razor 与 Event.mdinject IConfirmService _confirmService Tag Closable OnClosingasync e await onClosing(e) OnCloseonCloseonClosing/Tag code { async Task onClosing(CloseEventArgsMouseEventArgs e) { var result await _confirmService.Show(Do you confirm to close this tag?, Confirm); e.Cancel result ConfirmResult.Cancel; } void onClose() { // 用户确认后才会执行到这里 } }由于OnClosing是异步事件可以在其中 await 一个确认对话框再根据用户选择决定是否置Cancel从而实现确认后才真正关闭的交互。四、从基础到进阶围绕 Tag 的扩展能力一览Basic.md展示的是入口但Tag组件的完整能力不止于此官方文档目录 Tag demo 列表 中还有其他演示这里挑选与基础用法最相关的能力做简要串联帮助你理解同一组件在不同场景下的延伸多彩标签ColorfulColor参数支持两种赋值方式。一是预设枚举 TagColor.csred、green、blue、gold等 14 种常规色及其-inverse反色变体二是任意颜色字符串。在 Tag.razor.cs 的ResolveColorStrInput中可以看到解析逻辑以#开头或rgb(开头会被识别为自定义色通过background-color内联样式直接着色否则会先去预设色映射表里做不区分大小写的匹配匹配不上再按自定义色处理。预设状态色StatusTag将Color设为success、processing、error、warning、default即可表达不同业务状态样式上由 index.less 中的make-status-color-classes混合宏生成对应 CSS 类。可选中标签Checkable设置Checkable后点击标签会在选中/未选中间切换行为类似 Checkbox。注意 Checkable.md 特别说明这是完全受控组件——Checked值必须由父组件管理通过CheckedChanged回调接收变更。源码层面由 Tag.razor.cs 的UpdateCheckedStatus负责翻转状态并回调。受控显隐ControlledVisible参数默认true可完全由外部控制标签是否显示置false时组件追加ant-tag-hidden类display: none演示见 Controlled.razor。它与内部_closed是两条独立的显隐通道测试用例Renders_basic_tag_invisible验证了Visiblefalse时输出ant-tag-hidden类。动态增删Dynamic用集合驱动渲染一组标签配合OnClose从集合中移除、OnClick唤起输入框新增即完整的标签管理场景见 Dynamic.razor。图标与双色Icon / TwoToneIcon参数快速附加一个图标IconTemplate则允许自定义图标区渲染任意内容两者都在 Tag.razor 中有对应分支双色标签的实现可参考 TwoTone.razor。五、常用参数速查表以下参数均来自 Tag.razor.cs 的属性定义与官方 API 表一致参数类型默认值说明ChildContentRenderFragment-标签内容Closableboolfalse是否可关闭为true时显示关闭图标Checkableboolfalse是否可选择点击切换选中态Checkedboolfalse受控选中状态需配合CheckedChanged使用CheckedChangedEventCallbackbool-选中态变化回调ColorOneOfTagColor, stringTagColor.Default预设枚举色或自定义颜色字符串Iconstring-设置图标类型名IconThemeIconThemeTypeOutline图标风格IconTemplateRenderFragment-自定义图标区模板优先于Icon渲染OnClickEventCallback-点击标签回调点击关闭图标时不触发OnCloseEventCallbackMouseEventArgs-标签关闭完成后的回调OnClosingEventCallbackCloseEventArgsMouseEventArgs-关闭前的回调可用Cancel取消关闭Visiblebooltrue是否显示标签其中Closable、Visible、Checkable、Checked的默认值均在 Tag.razor.cs 的[Parameter]属性上直接标注Color的预设映射表_colorMap完整罗列了 38 种可用枚举值及其对应 CSS 类名可在源码中逐一核对。结语Tag是 ant-design-blazor 中上手成本最低的组件之一但基本用法背后蕴含的事件编排并不简单Closable打开关闭能力OnClosing负责拦截与决策OnClose负责收尾二者由CloseEventArgs.Cancel串联成一条严谨的调用链。本文结合 Tag.razor、Tag.razor.cs 与 TagTests.razor 还原了这条链路你可以直接在 Basic.razor 基础上动手实践把标签真正用进自己的业务界面。赞分享前端UI组件设计系统【免费下载链接】ant-design-blazor基于 Ant Design 与 Blazor 的前端组件库。让开发者解放生产力实现更大价值。项目地址https://gitcode.com/ant-design-blazor/ant-design-blazor点击查看免费下载相关推荐Ant Design 标签Tag组件实战基本展示与可关闭标签的完整用法Ant Design 标签Tag组件实战基本展示与可关闭标签的完整用法 标签Tag是 Ant Design 中用于“标记和分类”的轻量级展示组件适合UI组件前端设计系统Ant Design Blazor 中 Tabs 组件关闭标签页异常问题解析Ant Design Blazor 中 Tabs 组件关闭标签页异常问题解析 引言标签页关闭的痛点 在日常的企业级应用开发中标签页Tabs组件是管理多视前端UI组件设计系统基于 Ant Design Blazor 的 Alert 组件自定义关闭按钮详解基于 Ant Design Blazor 的 Alert 组件自定义关闭按钮详解 本文基于 Ant Design Blazor 开源仓库中 Alert 组件的前端UI组件设计系统上一篇如何用 FieldTrip 跑通第一条 EEG 分析流水线从原始数据到统计图下一篇ImageStrike 隐写分析工具17 种图片隐写方法挂进同一个下拉菜单创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

嵌入式开发Bug排查实战:串口日志、断点调试与硬件工具协同

嵌入式开发Bug排查实战:串口日志、断点调试与硬件工具协同

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 2:13:15 阅读更多 →
Django基于机器学习算法的员工流失预测大数据开发大数据专业毕业设计

Django基于机器学习算法的员工流失预测大数据开发大数据专业毕业设计

✅源码获取: 🍅--------------------【点击左侧最上方头像,看置顶文章最上方wx】联系我们------------------🍅✌网站介绍:✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。✌服务范围:大数据、…

2026/10/12 2:12:14 阅读更多 →
Xplorer:基于 Tauri 2 + Rust + React 的现代 AI 文件管理器全面解析

Xplorer:基于 Tauri 2 + Rust + React 的现代 AI 文件管理器全面解析

桌面应用AI 应用交互助手 【免费下载链接】xplorer Xplorer, a customizable, modern file manager 项目地址: https://gitcode.com/gh_mirrors/xp/xplorer 点击查看 免费下载 Xplorer 是一个跨平台(Windows / macOS / Linux)、可扩展的现代…

2026/10/12 2:12:14 阅读更多 →

最新新闻

Docker运行Redis生产实践:从单节点到集群的高可用落地

Docker运行Redis生产实践:从单节点到集群的高可用落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 4:59:19 阅读更多 →
线性回归正规方程:闭式解原理、实现与工程权衡

线性回归正规方程:闭式解原理、实现与工程权衡

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 4:59:19 阅读更多 →
Llama 3架构精读与FP8量化实战:128K长上下文压测

Llama 3架构精读与FP8量化实战:128K长上下文压测

Llama 3 发布那几天,整个模型圈都在刷分。我花了两天时间把技术报告和权重包全部过了一遍,顺手在现有的推理环境里做了 FP8 量化,又把长上下文的压力测试跑了几轮。今天这篇文章就是把“精读笔记 量化实操 长上下文实测”三个部分完整复盘一…

2026/10/13 4:59:19 阅读更多 →
软件工程开发阶段实战:从编码到可交付的工程化指南

软件工程开发阶段实战:从编码到可交付的工程化指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 4:59:19 阅读更多 →
SSM框架实战:求职招聘信息管理系统设计与实现

SSM框架实战:求职招聘信息管理系统设计与实现

1. 项目概述与需求拆解做Java Web开发这几年,SSM框架几乎是我接手毕业设计和企业小项目时最常碰到的组合。这个"求职招聘信息管理系统"表面上看着是个典型的管理系统,实际上把SSM框架的三大组件(Spring、SpringMVC、MyBatis&#x…

2026/10/13 4:59:19 阅读更多 →
实习考勤不内耗:习讯云打卡全流程避坑指南

实习考勤不内耗:习讯云打卡全流程避坑指南

实习第一个月,我差点被习讯云实习考勤打卡逼到内耗。每天到公司第一件事不是换工牌,而是掏出手机打开习讯云,看定位转圈、看按钮变灰、看页面弹“不在考勤范围”,一套流程下来,本来就不多的精气神先耗掉三分之一。后来…

2026/10/13 4:58:19 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →