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

Blazor:内联委托与@functions事件处理器执行结果不一致问题咨询

这不是Bug,是你忽略了事件参数类型的小细节!

这种情况我之前也碰到过,一开始以为是Blazor的问题,后来才发现是参数类型用错啦~

问题根源:

  • 当你用内联委托的时候,Blazor的编译器会自动帮你推断出键盘事件参数的正确类型是KeyboardEventArgs,所以代码能正常触发,控制台也能输出按键信息。
  • 但你在@functions里写的showKey方法用了UIKeyboardEventArgs,这个类型在现在的Blazor版本里已经被废弃或者替换了,Blazor找不到匹配的方法来处理事件,自然就不会执行你的代码,控制台也就没输出啦。

修正方法:

把参数类型换成KeyboardEventArgs就行,代码改成这样:

<input type="text" onkeyup="@showKey"/>

@functions{ 
    void showKey(KeyboardEventArgs e){ 
        Console.Write(e.Key); 
    } 
}

另外提一句,现在Blazor更推荐用@code块代替@functions,功能是一样的,但写法更贴合现代Blazor的开发习惯,改成@code的话就是:

<input type="text" onkeyup="@showKey"/>

@code{ 
    void showKey(KeyboardEventArgs e){ 
        Console.Write(e.Key); 
    } 
}

这样修改之后,你的事件处理器就能正常触发,控制台也会输出按键信息啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:51:59