You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Blazor中使用RenderTreeBuilder绑定组件引用?

使用RenderTreeBuilder实现Blazor组件的@ref绑定

你之前的问题出在误用了AddElementReferenceCapture方法——这个方法是用来捕获DOM元素引用的,而要获取Blazor组件(比如MudForm)的实例,必须使用AddComponentReferenceCapture方法。

正确的实现代码

private RenderFragment formControl => (builder) =>
{
    builder.OpenComponent<MudForm>(0);
    // 捕获组件实例并赋值给_Form变量
    builder.AddComponentReferenceCapture(1, value => _Form = value as MudForm);
    builder.AddAttribute(2, nameof(MudForm.ChildContent), ChildContent);
    builder.CloseComponent();
};

[Parameter]
public RenderFragment ChildContent { get; set; }

private MudForm _Form;

关键说明

  • AddComponentReferenceCapture的回调会在组件实例创建完成后触发,直接将实例赋值给你的私有字段即可
  • 每个RenderTreeBuilder方法的序列ID(第一个参数)必须唯一且递增,不能重复
  • 用as做类型转换可以保证类型安全,避免强制转换的异常风险

内容的提问来源于stack exchange,提问作者Marcel Müller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:24:27