子内容可以添加到MarkupString与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();
}
}

最新更新