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

Razor组件中通过@Body传递EventCallback级联值时事件为何不触发

问题原因及解决办法

核心问题1:CascadingValue传递的是字符串而非回调方法

父组件中<CascadingValue Value="HandleChange">的Value绑定了字符串"HandleChange",而非实际的回调方法。你需要去掉引号,使用@符号绑定到方法本身:

<CascadingValue Value="@HandleChange">
    @Body
</CascadingValue>

核心问题2:父组件方法签名与EventCallback的适配问题

子组件接收的是EventCallback<bool>,虽然void返回值的方法可以被包装为EventCallback,但更稳妥的是将父组件的方法改为返回Task(即使没有异步操作,也可以返回Task.CompletedTask),避免潜在的异步调用问题:

private Task HandleChange(bool isgb)
{
    // 先移除异常,否则触发后直接报错
    // throw new Exception();
    isGB = isgb;
    StateHasChanged();
    return Task.CompletedTask;
}

额外问题:父组件方法内的异常会阻断逻辑

当前父组件的HandleChange方法第一行就抛出异常,就算回调成功触发,后续的状态更新逻辑也永远不会执行,需要移除或调整异常抛出的位置。

子组件注意事项

确保子组件的CascadingParameter名称与父组件传递的CascadingValue的内容匹配,当前名称HandleChange是一致的,这部分没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:04:51