Blazor RenderFragment 用法教程

夏磊小哥_2364

夏磊小哥_2364

2026-01-14

474人浏览

原创

RenderFragment 是 Blazor 中封装可复用 UI 片段的核心委托类型,支持默认插槽(ChildContent)、泛型模板(RenderFragment)和多命名插槽三种用法,需注意参数命名、空值处理及事件回调配合。

blazor renderfragment 用法教程

Blazor 中的 RenderFragment 是构建可复用、模板化组件的核心机制,本质是一个“UI 片段委托”,它把一段 Razor 标记(含逻辑)封装成可传递、可插入的渲染单元。掌握它,就能轻松实现卡片、列表、标签页、折叠面板等常见 UI 模式。

基础用法:默认插槽(ChildContent)

最常用场景是让父组件向子组件注入任意内容。关键点有三个:参数命名必须为 ChildContent、类型为 RenderFragment?、用 @ChildContent 在子组件中渲染。

  • 子组件(Card.razor)中定义:


  
@Title

  
@ChildContent


@code {
  [Parameter] public string Title { get; set; } = "标题";
  [Parameter] public RenderFragment? ChildContent { get; set; }
}

  • 父组件中使用时,直接在标签内写内容,Blazor 自动绑定到 ChildContent:


  

姓名:张三


  

邮箱:zhang@example.com


带数据的模板:RenderFragment

当需要把集合项的数据传进模板里渲染(比如表格每行、列表每项),就得用泛型版本 RenderFragment。它接收一个类型参数,在调用时把当前数据对象传进去。

Wechat Article Html
Wechat Article Html

将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。

下载
  • 子组件(Table.razor)中声明:

[Parameter] public IReadOnlyList DataSource { get; set; } = new List();
[Parameter] public RenderFragment RowTemplate { get; set; } = @ @context.Name @context.Email ;

  • 渲染时循环调用模板,并传入每一项:


@foreach (var person in DataSource)
{
  @RowTemplate(person)
}

  • 父组件可自定义模板,@context 就是当前 Person 实例:


  
    

      

      

    

  
@context.Name @context.Email

多个命名插槽:灵活布局

一个组件可以暴露多个 RenderFragment 参数,各自命名,对应不同区域。Blazor 不限制数量,只要名字不重复、调用时显式指定即可。

  • 子组件(Modal.razor)支持 Header / Body / Footer:


@code {
  [Parameter] public RenderFragment? Header { get; set; }
  [Parameter] public RenderFragment? Body { get; set; }
  [Parameter] public RenderFragment? Footer { get; set; }
}

  • 父组件中按名称提供内容:


  

确认删除

  

确定要永久删除这条记录吗?


  

    
    
  

注意事项与技巧

实际开发中容易踩坑,记住这几个关键点:

  • 参数名不是必须叫 ChildContent,但只有叫这个名字时,父组件才能省略标签名直接写内容;其他名字必须显式用 ... 包裹
  • RenderFragment? 允许为空,使用前建议判空,或提供默认值(如 = @暂无内容)
  • 模板内可自由使用 @if、@foreach、@code 块,甚至嵌套其他组件 —— 它就是一段可执行的 Razor 片段
  • 若需从模板内触发子组件方法(比如按钮点击调用子组件逻辑),要用 EventCallback 配合传递,不能直接访问子组件实例

基本上就这些。RenderFragment 看似抽象,用熟了就是“把 HTML 当变量传”的自然延伸,不复杂但容易忽略细节。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

html

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

6899

3

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

2025.12.04

798

13

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

2024.01.03

4256

7

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

2025.12.06

306

9

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

2026.03.13

391

19

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

60

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

40

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

140

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

140

11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 228人学习