blazor return RenderFragment '__builder' 在当前上下文中不存在

blazor return RenderFragment '__builder' does not exist in the current context

我正在尝试从组件私有方法 return 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>
        };
    }
}

在我看来这可能不是 possible/allowed,如果不是,有什么办法可以避免编写相同的渲染代码吗?假设我需要使用这个 RenderButton 方法在多个循环中,如果 else 块

编辑:我现在能想到的唯一解决方案是为每个 RenderFragment 方法创建一个组件

您的代码似乎适用于较早版本的 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 => ... 部分。