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

如何遍历存储多条验证错误的字符串 为每条错误单独打印日志

问题原因分析

  • 第一段代码的核心问题是:validationErrors是通过string.Join拼接得到的单个字符串类型变量,对字符串做foreach遍历会枚举其中的每一个字符,自然只会打印单个字符。
  • 你后续给出的遍历ModelState.Values的写法不符合需求,存在两个问题:
    • 直接将Select返回的IEnumerable<string>类型传入LogError,日志只会输出集合的类型名,不会打印具体错误内容
    • 单个ModelState条目可能包含多条错误,你没有遍历对应条目下的Errors集合,无法实现每条错误单独生成日志的要求

正确实现代码

你可以先把所有错误信息提取到独立列表,再分别做日志打印和异常拼接操作:

// 第一步:提取所有错误消息存入列表
var allErrors = ModelState.Values
    .Where(e => e.Errors.Count > 0)
    .SelectMany(e => e.Errors)
    .Select(e => e.ErrorMessage)
    .ToList();

// 第二步:遍历列表单独打印每条错误
foreach (var errorMsg in allErrors)
{
    _logger.LogError(errorMsg);
}

// 第三步:拼接成单个字符串用于抛出异常
string validationErrors = string.Join(", ", allErrors);
throw new Exception(validationErrors);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:15:04