Blazor 返回 RenderFragment '__builder' 在当前上下文中不存在。

6

我正试图从组件的私有方法中返回一个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>
        };
    }
}

在我看来,这似乎不可能或不允许,如果不行,有没有什么方法可以避免重复编写相同的呈现代码?假设我需要在多个循环和if else块中使用此RenderButton方法。

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

1个回答

12

你的代码似乎是针对早期版本的Blazor。

现在,Blazor有了更优雅的表示法,使用模板委托

private RenderFragment RenderButton(int number) 
{
     return @<button type="button">@number</button>;
}

您遇到的错误是因为__builder是编译器使用的固定名称。您也可以像这样修复代码:

// not recommended
private RenderFragment RenderButton(int number)
{        
    return __builder =>
    {
        <button type="button">@number</button>
    };
}

Razor编译器能够智能地切换@;,并在幕后插入__builder => ...部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接