可以使用 RenderFragment 将子内容添加到 MarkupString 中吗?

Can child content be added to MarkupString with RenderFragment?

我有这样的代码;

@((MarkupString)$"<{item.Tagname}> {ChildContent} </{item.TagName}>")

中间的ChildContent是一个RenderFragment对象,但是输出如下;

"Microsoft.AspNetCore.Components.RenderFragment"

有没有什么办法可以让它正常工作?

我猜你正在尝试做这样的事情。

该示例使用 RenderTreeBuilder 构建标记。这相当于为组件编写汇编程序,但随着标记变得复杂,这是唯一明智的方法!

如果使用此方法,忠告一句:序列号需要手动编码,不要使用迭代器。

@this.content

@code {
    [Parameter] public RenderFragment? ChildContent { get; set; }

    [Parameter] public string TagName { get; set; } = "div";

    private RenderFragment content => builder =>
    {
        builder.OpenElement(0, TagName);
        builder.AddContent(1, ChildContent);
        builder.CloseComponent();
    };
}

或作为一个完整的组件:

public class ComponentClass : ComponentBase
{
    [Parameter] public RenderFragment? ChildContent { get; set; }

    [Parameter] public string TagName { get; set; } = "div";

    protected override void BuildRenderTree(RenderTreeBuilder builder)
    {
        builder.OpenElement(0, TagName);
        builder.AddContent(1, ChildContent);
        builder.CloseComponent();
    }
}