我想知道是否有推荐的方法在代码中将字符串转换为 RenderFragment。 现在我正在这样做:
RenderFragment fragm = @<text>@myString</text>;
但我不知道这是否是最好的方法
据我所知,没有“推荐”方法。
A
RenderFragment
是一个委托,定义为:
public delegate void RenderFragment(RenderTreeBuilder builder);
它是传递给
Renderer
以实际呈现组件标记的代码块。
这是一个演示页面,显示了定义一种方法的三种方法:
@page "/"
<PageTitle>Index</PageTitle>
<h1>Hello, world!</h1>
<div class="p-2">
@RF1
</div>
<div class="p-2">
@RF2
</div>
<div class="p-2">
@RF3
</div>
@code {
//need to be careful with the builder name not to clash with one the names used by the Razor compiler
private RenderFragment RF1 => (mybuilder) =>
{
<text>@myString</text>
};
private RenderFragment RF2 => (builder) =>
{
builder.AddMarkupContent(0, $"<text>{myString}</text>");
};
// DO NOT use an loop incrementer for the sequence number
private RenderFragment RF3 => (builder) =>
{
builder.OpenElement(0, "text");
builder.AddContent(1, myString);
builder.CloseElement();
};
private string myString = "Hello Blazor";
}
第一个有点违反直觉。 它仅适用于 Razor 组件文件,因为 Razor 编译器可以识别它并将其编译为类似于第二个示例的代码块。
我发现 (MarkupString) 是我将 html 字符串显示为标记所需的转换。