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

使用MudCheckBox时@bind-Checked与CheckedChanged冲突报错的解决办法

解决MudCheckBox的CheckedChanged重复绑定错误

错误原因

  1. 参数重复冲突:@bind-Checked是Blazor双向绑定语法,会自动生成Checked和CheckedChanged两个组件参数,手动添加CheckedChanged会导致参数重复,触发RZ10010错误。
  2. 事件回调格式错误:直接写RolSelected(rol.Id.Value)会立即执行方法,而非绑定事件回调;同时原方法返回void,不符合EventCallback<bool>的参数要求,触发CS1503错误。

解决方案

方案一:手动处理绑定逻辑,移除@bind-Checked

放弃双向绑定语法,手动指定Checked值,并在CheckedChanged中同时更新状态和执行业务逻辑:

@foreach (var rol in Rollenlist)
{
    <MudCheckBox Checked="@rol.IsSelected" 
                 Label="@rol.Name" 
                 LabelPosition="LabelPosition.Start" 
                 Color="Color.Primary"
                 Size="MudBlazor.Size.Large" 
                 CheckedChanged="(bool isChecked) => RolSelected(rol.Id.Value, isChecked)">
    </MudCheckBox>
}

修改RolSelected方法,接收选中状态并更新对象属性:

void RolSelected(int id, bool isChecked) 
{
    // 先更新当前角色的选中状态
    var targetRole = Rollenlist.FirstOrDefault(r => r.Id.Value == id);
    if (targetRole != null)
    {
        targetRole.IsSelected = isChecked;
    }
    // 原来的业务逻辑...
}

方案二:保留双向绑定,改用OnClick事件

沿用原InputCheckbox的思路,用OnClick事件处理业务逻辑,@bind-Checked自动维护选中状态:

@foreach (var rol in Rollenlist)
{
    <MudCheckBox @bind-Checked="@rol.IsSelected" 
                 Label="@rol.Name" 
                 LabelPosition="LabelPosition.Start" 
                 Color="Color.Primary"
                 Size="MudBlazor.Size.Large" 
                 OnClick="(() => RolSelected(rol.Id.Value))">
    </MudCheckBox>
}

此方案无需修改原RolSelected方法,@bind-Checked会自动同步rol.IsSelected的值,OnClick仅触发额外业务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:53:11