Blazor渲染片段能否以表达式块开头?可省略外层<text>标签吗?
可以去掉外层
<text>标签 完全可以让Blazor的RenderFragment以表达式块作为开头,不需要外层的<text>标签。Blazor编译器能够直接解析这种混合代码块和HTML元素的结构,<text>标签主要用于包裹无容器的纯文本或零散内容,这里的场景不需要它。
修改后的代码如下:
@{ RenderFragment<MyClass> myRenderFragment = (ctx) => @{var clas = ctx.Bold ? "bold" : "";} <span class="@clas">@ctx.Text</span>; } @myRenderFragment(new MyClass(true, "Hello")) @myRenderFragment(new MyClass(false, "World")) @code { public record class MyClass(bool Bold, string Text); }
这段代码的逻辑和原示例完全一致:通过表达式块根据ctx.Bold的值设置样式类,然后渲染对应的<span>元素,只是去掉了不必要的<text>包裹。Blazor会正确处理RenderFragment中先执行代码块、再输出HTML元素的结构。
内容的提问来源于stack exchange,提问作者innominate227
相关产品推荐
相关产品推荐

