有人知道为什么下面的不起作用吗?如果我删除“onclick”事件,那么它会按预期编译和工作。是我们不允许在 Reusable RenderFragments 内使用事件吗? ?
环境:ASP.NET Core 3.1 和 Blazor Web 程序集
非常感谢您的提前帮助!
无法将 lambda 表达式转换为预期的委托(delegate)类型,因为 block 中的某些返回类型不能隐式转换为委托(delegate)返回类型
@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/