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

Blazor双向数据绑定问题:Checkbox未更新绑定属性

Blazor WebAssembly双向绑定问题解决

你的问题出在复选框的绑定代码上——同时使用了@bind-value和checked属性,这两者会互相冲突,破坏了Blazor的双向绑定逻辑。

问题分析

Blazor的@bind-value指令已经自动处理了复选框的状态同步(包括checked属性的设置和onchange事件的绑定),你手动添加的checked="@(Room.IsActive?"checked":null)"会覆盖@bind-value的自动处理,导致绑定失效。

解决方案

移除复选框上手动设置的checked属性,仅保留@bind-value="Room.IsActive"即可。此外,复选框不需要指定@bind-value:event="oninput",因为Blazor对复选框的双向绑定默认使用onchange事件,完全适配需求。

修改后的完整组件代码:

<h2 class="bg-light border p-2">
    First Room
</h2>
Room: @Room.RoomName
<br />
Price: @Room.Price
<br />

<input type="number" @bind-value="Room.Price" @bind-value:event="oninput" />
<br />
<input type="checkbox" @bind-value="Room.IsActive" /> &nbsp; Is Active
<br />
<span>This room is @(Room.IsActive ? "Active" : "Inactive")</span>
<br />


Room: @Room.RoomName
<br />
Price: @Room.Price
<br />


@code{
    BlazorRoom Room = new BlazorRoom()
    {
        Id = 1,
        RoomName = "Villa Suite",
        IsActive = true,
        Price = 599
    };
}

额外说明

如果后续你需要在代码中手动更新Room.IsActive的值(比如通过按钮点击),由于Room是组件内的本地变量,Blazor会自动检测状态变化并刷新UI。如果遇到复杂场景下UI未刷新的情况,可以手动调用StateHasChanged()方法通知组件更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 16:53:13