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

是否可以修改列表中特定对象对应的ModelStateError?

实现方案

完全可以实现,核心思路是匹配集合绑定对应的ModelState Key前缀,批量删除指定索引下的所有校验错误。
ASP.NET Core绑定数组/列表类型参数时,ModelState的Key会统一使用参数名[索引].属性名的格式,你可以按以下代码实现:

for (int i = 0; i < cars.Count; i++)
{
    if (cars[i].IsDeleted)
    {
        // 拼接当前车辆对应的ModelState Key前缀,参数名如果不是cars请自行替换
        string keyPrefix = $"cars[{i}].";
        // 先查询所有匹配的Key,转成列表后再操作,避免枚举时修改集合报错
        var keysToRemove = ModelState.Keys
            .Where(k => k.StartsWith(keyPrefix))
            .ToList();

        foreach (string key in keysToRemove)
        {
            // 直接移除对应Key的所有错误和状态
            ModelState.Remove(key);
            // 如果只需要清除校验错误、保留字段原始值,可以换成下面的方法
            // ModelState.ClearValidationState(key);
        }
    }
}

注意事项

  • 如果你不确定当前项目的ModelState Key生成规则,可以打断点查看ModelState.Keys的实际值调整前缀匹配逻辑
  • 如果接口接收的汽车列表参数名不是cars,需要把代码里的cars替换为实际的参数名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:45:09