在 C# Blazor 中的分部类中初始化 RenderFragment

Xan*_*orm 3 .net c# blazor

我正在使用第三方包中的组件,该组件接受 RenderFragment 作为参数,并且我想通过索引页的部分类为该 RenderFragment 分配一个值。

我意识到当我在标签中构造 RenderFragment 时code,它就可以工作了。但是一旦将其放入 中partial class,Visual Studio 就会开始标记错误。

有效的示例代码:

剃刀文件:

<Statistic Title="Feedback" Value="1128" PrefixTemplate="@prefix1" /> 

@code { 
    public RenderFragment prefix1 = @(<Icon Type = "like" />);
} 
Run Code Online (Sandbox Code Playgroud)

不起作用的示例代码:

剃刀文件:

<Statistic Title="Feedback" Value="1128" PrefixTemplate="@prefix1" />
Run Code Online (Sandbox Code Playgroud)

部分类:

public partial class Index {
    RenderFragment prefix1 = @(<Icon Type = "like" />);
}
Run Code Online (Sandbox Code Playgroud)

所以我现在的问题是,如何在部分类中构造渲染片段?我似乎在网上找不到有关此主题的任何内容。

提前致谢。

Xan*_*orm 8

正如Magoo 先生建议的那样,我选择了 RenderTreeBuilder ,因为我想让我的业务逻辑远离 UI。

我就是这样做的:

剃刀文件:

<Statistic Title="Feedback" Value="1128" PrefixTemplate="@prefix1" />
Run Code Online (Sandbox Code Playgroud)

部分类:

public partial class OperationCard
{
    RenderFragment prefix1 = builder =>
    {
        builder.OpenComponent<Icon>(1);
        builder.AddAttribute(2, "Type", "like");
        builder.CloseComponent();
    };
}
Run Code Online (Sandbox Code Playgroud)

  • 这里要理解的最重要的事情是“RenderFragment”不是字符串或 html 代码块,它是一个委托。任何实现“void method(RenderTreeBuilder builder)”模式的方法都可以分配给“RenderFragment”属性或字段。 (2认同)