可以使用 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();
}
}
我有这样的代码;
@((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();
}
}