asp.net-core - 事件为 : Cannot convert lambda expression to intended delegate type 的代码中的 Blazor 可重用 RenderFragments

标签 asp.net-core blazor blazor-client-side blazor-webassembly

有人知道为什么下面的不起作用吗?如果我删除“onclick”事件,那么它会按预期编译和工作。是我们不允许在 Reusable RenderFragments 内使用事件吗? ?

环境:ASP.NET Core 3.1 和 Blazor Web 程序集

非常感谢您的提前帮助!

无法将 lambda 表达式转换为预期的委托(delegate)类型,因为 block 中的某些返回类型不能隐式转换为委托(delegate)返回类型

enter image description here

@code {
    RenderFragment<(CategoryDto category, int myId)> rf =
      val => __builder =>
      {
        <h1 @onclick="()=> Console.WriteLine(val.category.Name)">Hello @val.category.Name, @val.myId</h1>
      };
}

最佳答案

代码中的@onclick 处理程序最终将由 EventCallbackFactory 创建。但是,该工厂需要对字段初始值设定项不支持的“this”的引用 - 因此您会收到此错误(可能还有另一个关于“this”的错误)。

解决方案非常简单。您只需要将该字段转换为如下属性:

RenderFragment<(CategoryDto category, int myId)> rf => val => __builder =>
{
    <h1 @onclick="() => Console.WriteLine(val.category.Name)">Hello @val.category.Name, @val.myId</h1>
};

关于asp.net-core - 事件为 : Cannot convert lambda expression to intended delegate type 的代码中的 Blazor 可重用 RenderFragments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64738091/

相关文章:

c# - Blazor OnAfterRenderAsync Javascript

c# - 生成 NSwag 客户端作为构建的一部分

c# - Blazor 表在更新值时闪烁

blazor - 如何在 Blazor 中迭代 TValue 类型属性

blazor - 仅允许特定文件类型在 blazor 中上传

asp.net-mvc - 在 Blazor 的 ValidationMessage 中显示 html 或多行消息?

c# - 在 .NET Core 环境变量中表示字典 <string, string>

c# - Post FromBody 始终为空

c# - 无法解析类型 'System.Net.Http.HttpClient' 的服务

visual-studio - Visual Studio 2019 在哪里可以找到 .net core 3.1 的 WebAssembly 模板