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

MudRadioGroup移除MudRadio后选中项显示异常的技术求助

问题解决方法

你的问题源于MudRadioGroup的组件复用机制:删除集合前序项后,Blazor会复用已有的MudRadio组件,而MudRadioGroup内部可能依赖渲染顺序的索引维护选中状态,导致与绑定的SelectedOption不同步。

修改方案很简单,给MudRadioGroup添加动态Key,强制集合变化时组件重新初始化,确保根据SelectedOption正确匹配选中项:

<MudRadioGroup T="string" SelectedOption="@selectedItem" SelectedOptionChanged="OnSelectedOptionChanged" @key="string.Join(',', Items)">
    @foreach (var item in Items)
    {
        <div>
            <MudRadio Option="@(item)" Color="Color.Primary">@item</MudRadio>
            <MudButton OnClick="() => RemoveItem(item)" Variant="Variant.Filled">Remove</MudButton>
        </div>
    }
</MudRadioGroup>


@code {
    private string selectedItem = string.Empty;

    private List<string> Items = new()
    {
        "Item1",
        "Item2",
        "Item3"
    };

    private void OnSelectedOptionChanged(string selectedOption)
    {
        selectedItem = selectedOption;
    }

    private void RemoveItem(string item)
    {
        Items.Remove(item);
        // 可选:若选中项被删除,重置选中状态
        if (selectedItem == item)
        {
            selectedItem = Items.FirstOrDefault() ?? string.Empty;
        }
    }
}

关键说明:

  • @key="string.Join(',', Items)":当Items内容变化时,Key值会随之改变,Blazor会销毁旧的MudRadioGroup并创建新实例,确保组件内部状态与SelectedOption完全同步。
  • 额外添加的选中项删除重置逻辑,避免出现选中项不存在的异常情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:35:10