blazor return RenderFragment '__builder' 在当前上下文中不存在
Posted
技术标签:
【中文标题】blazor return RenderFragment \'__builder\' 在当前上下文中不存在【英文标题】:blazor return RenderFragment '__builder' does not exist in the current contextblazor return RenderFragment '__builder' 在当前上下文中不存在 【发布时间】:2022-01-02 20:23:38 【问题描述】:我正在尝试从组件私有方法返回 RenderFragment
,
但我收到编译错误:
'__builder' does not exist in the current context
这是显示问题的最少代码:
<div>
@RenderButton(1)
</div>
@code
private RenderFragment RenderButton(int number)
return builder =>
<button type="button">@number</button>
;
在我看来,这可能是不可能/不允许的,如果不是,有什么办法可以避免编写相同的渲染代码?假设我需要在多个循环中使用这个 RenderButton
方法, if else 阻塞
编辑:我现在能想到的唯一解决方案是为每个RenderFragment
方法创建一个组件
【问题讨论】:
【参考方案1】:您的代码似乎适用于早期版本的 Blazor。
Blazor 现在有了更优雅的表示法,使用 templated delegates:
private RenderFragment RenderButton(int number)
return @<button type="button">@number</button>;
通常缩写为:
private RenderFragment RenderButton(int number) =>
@<button type="button">@number</button>;
您的错误的解释是 __builder
是一个固定名称,由转译器使用。你也可以像这样修复你的代码:
// not recommended
private RenderFragment RenderButton(int number)
return __builder =>
<button type="button">@number</button>
;
razor 编译器能够对@
和;
进行智能切换,并将__builder => ...
部分插入窗帘后面。
【讨论】:
以上是关于blazor return RenderFragment '__builder' 在当前上下文中不存在的主要内容,如果未能解决你的问题,请参考以下文章