gpt4 book ai didi

c# - 如何使用 LINQ 在 ASP.NET Core 中从 ModelState 中获取充满错误消息的 IEnumerable

转载 作者:太空宇宙 更新时间:2023-11-03 18:02:03 25 4
gpt4 key购买 nike

我有以下 C# 扩展:

public static class ModelStateHelper
{
public static IEnumerable Errors(this ModelStateDictionary modelState)
{
if (!modelState.IsValid)
{
return modelState.ToDictionary(kvp => kvp.Key,
kvp => kvp.Value.Errors
.Select(e => e.ErrorMessage).ToArray())
.Where(m => m.Value.Any());

}

return null;
}
}

从 Controller 调用此扩展以生成 JSON,并生成以下 JSON:
{
"error": [
{
"key": "Password",
"value": [
"The Password field is required."
]
},
{
"key": "Username",
"value": [
"The Username field is required."
]
}
]
}

如何修改此扩展方法以仅返回错误消息列表?像这样:
{
"error": [
"The Password field is required.",
"The Username field is required."
]
}

最佳答案

首先,请不要将您的扩展类命名为“FooHelper”,因为 Helper 毫无意义。因为这是你的ModelStateExtenstions让我们这样称呼它。你也想得到IEnumerable<string>所以以这种方式返回。

这是以下代码:

 public static class ModelStateExtenstions
{
public static IEnumerable<string> GetErrorMessages(this ModelStateDictionary modelState)
{
if (!modelState.IsValid)
{
return modelState.ToDictionary(kvp => kvp.Key, kvp => kvp.Value)
.Select(e => String.Join(" ", e.Value.Errors.Select(x => x.ErrorMessage)));
}

return Enumerable.Empty<string>();
}
}

由于一个属性可能有多个错误消息,因此我决定将它们加入空白空间。希望这会帮助你。

关于c# - 如何使用 LINQ 在 ASP.NET Core 中从 ModelState 中获取充满错误消息的 IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54386335/

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