bug*_*uga 6 blazor blazor-server-side asp.net-blazor blazor-webassembly
我试图RenderFragment从组件私有方法返回 a ,但出现编译错误:
'__builder' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)
这是显示问题的最小代码:
<div>
@RenderButton(1)
</div>
@code {
private RenderFragment RenderButton(int number)
{
return builder =>
{
<button type="button">@number</button>
};
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这可能是不可能/允许的,如果不是,有什么方法可以避免编写相同的渲染代码?假设我需要在RenderButton多个循环中使用此方法,并且 if else 块
编辑:我现在能想到的唯一解决方案是为每个RenderFragment方法创建一个组件
Hen*_*man 13
您的代码似乎适用于早期版本的 Blazor。
Blazor 现在有一个更优雅的表示法,使用模板化委托:
private RenderFragment RenderButton(int number)
{
return @<button type="button">@number</button>;
}
Run Code Online (Sandbox Code Playgroud)
对您的错误的解释是这__builder是一个固定名称,由转译器使用。您还可以像这样修复您的代码:
// not recommended
private RenderFragment RenderButton(int number)
{
return __builder =>
{
<button type="button">@number</button>
};
}
Run Code Online (Sandbox Code Playgroud)
razor 编译器能够对@和进行智能切换;,并将该__builder => ...部分插入幕后。
| 归档时间: |
|
| 查看次数: |
3473 次 |
| 最近记录: |