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

.NET 7中Blazor @bind绑定值无法随按键实时更新的问题

Blazor输入框绑定同步问题解决方案

这不是Bug,是你对Blazor的@bind默认行为理解有误——和Angular的实时绑定逻辑不同,Blazor默认的@bind是在输入框失去焦点时才会更新绑定的属性值,而非按键触发时同步。

解决方案:指定实时更新的绑定事件

通过@bind:event参数将绑定触发事件改为oninput,这样每次输入(按键、粘贴等操作)都会立即更新绑定的SelectedField.Name,同时你的CheckData方法也能拿到最新值:

<input type="text" @bind="@SelectedField.Name" @bind:event="oninput" @onkeyup="() => CheckData()" />
<label>@SelectedField.Name</label>

对应的后台代码无需修改:

@code {
    public void CheckData() 
    {
        Console.WriteLine(SelectedField.Name);
    }

    // 假设SelectedField是已定义的模型实例
    public YourFieldType SelectedField { get; set; } = new YourFieldType { Name = string.Empty };
}

原理说明

Blazor默认的@bind绑定的是onchange事件,该事件仅在输入框失去焦点(比如点击页面其他区域)时触发,这就是为什么你之前只有在输入框销毁后才看到值更新的原因。而oninput事件会在输入内容变化的瞬间触发,完美匹配你需要的实时同步需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:47:05