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

Blazor:不使用@bind-Value时EditContext下自定义下拉组件异常

Blazor自定义Dropdown组件绑定问题

现状说明

自定义Dropdown组件支持通用For参数与@bind-Value绑定,在EditContext场景下,验证不通过时会自动添加invalid CSS类标记,使用@bind-Value时该功能完全正常。

问题描述

当需要单独监听ValueChanged事件回调、放弃@bind-Value自动绑定时,组件无法正常工作。

代码示例

正常工作的写法

<!-- 可以正常工作 -->
<DataRowDropDownComponent Values="_productTypes.Select(gg => gg.Label)"
    @bind-Value="ArticleEntity.ProductType"
    For="() => ArticleEntity.ProductType"></DataRowDropDownComponent>

无法正常工作的写法

<!-- 无法正常工作 -->
<DataRowDropDownComponent Values="_goodsGroups.Select(gg => gg.Label)"
    Value="ArticleEntity.GoodsGroup"
    For="() => ArticleEntity.GoodsGroup"
    T="string"
    ValueChanged="GoodsGroupChanged"></DataRowDropDownComponent>

排查结果

问题根源是类型为FieldIdentifier的_fieldidentifier变量为空,触发如下异常:

Error: System.ArgumentNullException: Value cannot be null. (Parameter 'obj') at System.OrdinalCaseSensitiveComparer.GetHashCode(String obj) at Microsoft.AspNetCore.Components.Forms.FieldIdentifier.GetHashCode() at System.Collections.Generic.Dictionary2...

该组件继承自通用组件基类,其他同类型Input组件使用相同模式可正常运行,目前缺失@bind-Value与FieldIdentifier协同工作的关键逻辑信息。

补充代码:GoodsGroupChanged方法实现

public async Task GoodsGroupChanged(string val)
{
    if(ArticleEntity is not null && val is not null)
    {
        var value = val.ToString() + "";
        GetAndSetNavigation(value, NavigationTypes.GoodsGroup);
        await LoadProductGroups(value);
    }
}
public void GetAndSetNavigation(string label, NavigationTypes navType)
{
    if(ArticleEntity?.Entity is AssortmentArticle aa)
    {
        aa.Navigation = navType switch {
            NavigationTypes.ProductGroup => _productGroups.Find(n => n.Label == label),
            NavigationTypes.GoodsGroup => _goodsGroups.Find(n => n.Label == label),
            NavigationTypes.ProductType => null,
            _ => null
        };
    }
}

private async Task LoadProductGroups(string label)
{
// 业务逻辑暂不公开 --> 为另一个组件设置_productType列表
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 09:05:27