You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor中Action替代Lambda后UI不更新,如何改用Func/EventCallback?

Blazor网格异步点击事件UI不更新问题

我正在开发Blazor项目,其中部分网格包含大量行列。考虑到Lambda函数开销较高,按照微软文档建议改用Action实现点击事件。

在Cell类中添加属性:

public Action<MouseEventArgs> Action { get; set; } = (e) => { };

设置单元格时赋值:

someRow.FixedCells[0].Action = (e) => { SwapIngredientRows(someRow, false); };

此前的Razor代码为:

@onclick="@(() => SwapIngredientRows(row, false))"

SwapIngredientRows是异步方法,内部包含2个await调用且会更新UI。但改为@onclick="cell.Action"后,数据库更新正常,UI却未同步更新。想了解是否可以将Action改为Func或EventCallback,使其行为与原Lambda一致?


优化方案(基于@hank-holterman的方案调整)

因需要获取点击时Control键的状态,调整后的属性改为:

public Func<MouseEventArgs, Task> Action { get; set; }

使用方式如下:

Action = (e) => ProcessClick(e, my, other, properties)

其中e为MouseEventArgs;若无需该参数,直接不传入即可:

Action = (e) => DumbClick(my, other, properties)

Razor语法无需修改,保持:

@onclick="cell.Action"

内容的提问来源于stack exchange,提问作者Grandizer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:55:22