gpt4 book ai didi

c# - 如何从模型状态显示错误消息及其字段

转载 作者:行者123 更新时间:2023-12-03 07:52:46 25 4
gpt4 key购买 nike

我的数据有以下代码

public class PersonDto 
{
public string name ;
public DateTime dateOfBirth;
}

现在我有了 Controller 来保存数据。

假设我没有填写 dateOfBirth,它将生成一个错误
[HttpPost("create")]
public async Task<IActionResult> CreateClient([FromBody] PersonDto cpDto)
{
if (!ModelState.IsValid)
{
var errors = ModelState.Values.SelectMany(v => v.Errors);
var message = string.Join(" | ", ModelState.Values
.SelectMany(v => v.Errors)
.Select(e => e.ErrorMessage));

Console.WriteLine(message);
return BadRequest(message);
}

......... (other code)
}

假设我没有输入 dateOfBirth,它应该会产生错误提示。

我的问题是,当我保存错误消息时会生成,但 ErrorMessage似乎总是空字符串==> (" | ")
如果我进入 Debug模式,则可以看到哪些字段产生了错误,但是我不知道如何显示哪些字段产生了错误(只是得到了无效字段错误消息)。

我试过了
return BadRequest(ModelState);

它也不会显示哪个字段导致了错误。

注意:我在.NET Core 2.2中使用C#

最佳答案

要获取所有错误消息及其相应的字段:

var errors = ModelState
.Where(kv => kv.Value.Errors.Any())
.Select(kv => new
{
Field = kv.Key,
ErrorMessages = kv.Value.Errors.Select(e => e.ErrorMessage),
});
errors将是一个列表,其中包含所有错误,并带有 FieldErrorMessages的匿名对象,如果您想获得一个包含错误域的字符串:
var errorsString = string.Join(" | ", errors
.Select(e => $"Field: {e.Field}, Error: {string.Join(", ", e.ErrorMessages)}"));

关于c# - 如何从模型状态显示错误消息及其字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56919803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com