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

如何利用MudSelect下拉框触发OnManufacturerChanged方法?

解决MudSelect值变更触发方法的问题

针对你使用MudSelect时,需要在_selectedManufacturer每次变更时触发OnManufacturerChanged()的需求,有两种可靠的实现方式:

方法一:拆分绑定语法糖,使用ValueChanged事件

把@bind-Value拆分为Value和ValueChanged,直接在事件中处理值更新与方法调用:

<MudSelect T="ManufacturerDto" Label="Select Manufacturer" 
           Value="@_selectedManufacturer"
           ValueChanged="@(manufacturer => {
               _selectedManufacturer = manufacturer;
               OnManufacturerChanged();
           })"
           Variant="Variant.Outlined">
    @foreach (var manufacturer in _filteredManufacturers)
    {
        <MudSelectItem T="ManufacturerDto" Value="@manufacturer">@manufacturer.ManufacturerName</MudSelectItem>
    }
</MudSelect>

这种方式最直接,每次选中项变更时会立刻触发方法,不会出现延迟或多次触发的问题。

方法二:通过属性Setter触发方法

如果不想修改UI代码,可以在_selectedManufacturer的Setter中加入方法调用逻辑:

private ManufacturerDto _selectedManufacturer;
public ManufacturerDto SelectedManufacturer
{
    get => _selectedManufacturer;
    set
    {
        if (_selectedManufacturer != value)
        {
            _selectedManufacturer = value;
            OnManufacturerChanged();
        }
    }
}

之后在UI中绑定这个属性即可:

<MudSelect T="ManufacturerDto" Label="Select Manufacturer" 
           @bind-Value="SelectedManufacturer"
           Variant="Variant.Outlined">
    @foreach (var manufacturer in _filteredManufacturers)
    {
        <MudSelectItem T="ManufacturerDto" Value="@manufacturer">@manufacturer.ManufacturerName</MudSelectItem>
    }
</MudSelect>

这种方式把逻辑封装在属性内,UI代码更简洁,同样能保证值变更时立刻触发方法。

注意:不要使用OnClick、OnClose这类事件,它们的触发时机与值变更时机不匹配,会导致你遇到的延迟或无效问题。

内容的提问来源于stack exchange,提问作者Haris Tirić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:20:18