错误 CS1660:无法将 lambda 表达式转换为类型“bool”,因为它不是委托类型

Spr*_*tty 11 blazor blazor-server-side

这让我发疯了多年。我拿了以下工作代码

<input @onchange="@((ui) => Console.WriteLine(ui.Value))" />
Run Code Online (Sandbox Code Playgroud)

并将其复制到一个新的 blazor 组件项目中。然后我开始收到错误

error CS1660: Cannot convert lambda expression to type 'bool' because it is not a delegate type

小智 10

@using不幸的是,添加声明对我不起作用。显然,您现在必须直接在引号内定义 lambda 表达式,而无需将其包装在 内@(...),如下所示:

<input @onchange="changeEventArgs => Console.WriteLine(changeEventArgs.Value)" />
Run Code Online (Sandbox Code Playgroud)

有关示例,请参阅此参考:https : //docs.microsoft.com/en-us/dotnet/architecture/blazor-for-web-forms-developers/components#event-handlers


Spr*_*tty 7

由于这浪费了我很多时间并且错误非常具有误导性,我以为我会写下来。

问题是缺少@using添加以下内容,一切正常。

@using Microsoft.AspNetCore.Components.Web
Run Code Online (Sandbox Code Playgroud)

我猜在那个命名空间中有一些扩展方法可以使剃刀生成的代码中的魔法发挥作用......