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

C# Blazor如何在partial分部类中初始化RenderFragment

问题原因

@(<Icon Type = "like" />) 是Razor编译器提供的专属语法糖,仅支持在.razor文件的代码(包括@code块)中使用,纯C#编写的.cs分部类无法识别该Razor语法,因此直接复用代码会报错。

正确实现方案

RenderFragment的本质是接收RenderTreeBuilder参数的委托,你可以通过手动构建渲染树的方式在分部类中构造RenderFragment:

public partial class Index 
{
    // 注意添加public访问修饰符,保证Razor页面可访问
    public RenderFragment prefix1 => builder =>
    {
        // 打开Icon组件,序号为渲染树的唯一标识,同一段渲染逻辑内保持唯一即可
        builder.OpenComponent<Icon>(0);
        // 添加组件参数,用nameof避免属性名拼写错误
        builder.AddAttribute(1, nameof(Icon.Type), "like");
        // 关闭组件
        builder.CloseComponent();
    };
}

复杂RenderFragment简化方案

如果需要构造的RenderFragment嵌套层级多、逻辑复杂,手动写渲染树成本较高,可以单独封装为一个小型Razor组件:

  1. 新建LikePrefix.razor文件,内容直接写你需要的渲染逻辑:
<Icon Type="like" />
  1. 分部类中直接渲染该独立组件即可:
public partial class Index 
{
    public RenderFragment prefix1 => builder =>
    {
        builder.OpenComponent<LikePrefix>(0);
        builder.CloseComponent();
    };
}

内容的提问来源于stack exchange,提问作者Xander Selorm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:24:02