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

MudBlazor MudSelect选中主肌群后错误显示列表首项而非已选值

解决MudBlazor多选MudSelect切换数据源后显示异常问题

问题场景

  • 两个MudSelect组件:单选「主要肌群」、多选「次要肌群」
  • 未选择主要肌群时,次要肌群的MudSelect正常显示已选值(逗号分隔形式)
  • 选择主要肌群后,次要肌群的MudSelect下拉关闭时始终显示列表第一项,但下拉菜单内可见实际选中的正确选项

解决方案

方案1:添加@key强制组件重新渲染

当AvailableSecondaryMuscleGroups数据源随主要肌群选择变化时,给MudSelect添加@key属性,强制组件在数据源更新时重新渲染,从而正确计算显示文本:

<MudSelect T="MuscleGroups" Label="Secondary Muscle Groups" MultiSelection="true"
           @bind-SelectedValues="SecondaryMuscleGroups"
           Variant="Variant.Outlined"
           @key="AvailableSecondaryMuscleGroups">
    @foreach (var muscleGroup in AvailableSecondaryMuscleGroups)
    {
        <MudSelectItem Value="@muscleGroup">@muscleGroup.ToString()</MudSelectItem>
    }
</MudSelect>

方案2:自定义显示文本生成逻辑

直接通过SelectedValuesTextFunc接管显示文本的生成,确保始终基于实际选中值生成逗号分隔的字符串:

<MudSelect T="MuscleGroups" Label="Secondary Muscle Groups" MultiSelection="true"
           @bind-SelectedValues="SecondaryMuscleGroups"
           Variant="Variant.Outlined"
           SelectedValuesTextFunc="@(values => string.Join(", ", values.Select(v => v.ToString())))">
    @foreach (var muscleGroup in AvailableSecondaryMuscleGroups)
    {
        <MudSelectItem Value="@muscleGroup">@muscleGroup.ToString()</MudSelectItem>
    }
</MudSelect>

问题原因

选择主要肌群后,AvailableSecondaryMuscleGroups数据源发生变更,MudBlazor默认的多选MudSelect显示文本计算逻辑未正确感知数据源更新,导致显示的文本与实际选中值不匹配。上述两种方案分别通过强制重渲染或自定义显示逻辑解决了该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:57:27