gpt4 book ai didi

c# - .Net Web Api不显示必需属性的错误消息

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

我有一个 .Net WebAPI项目,它从多个客户端接收数据对象并对其进行处理。

我想确保JSON消息确实包含所有必填字段。

为了确保这一点,我向客户端必须设置的所有属性添加了Required属性(System.ComponentModel.DataAnnotations)。

当我检查ModelState.IsValid时,此方法工作正常,但现在我想抛出一个有用的BadRequest,其中应包含在ErrorMessage属性中设置的Required

模型

public class DataModel
{
[Required(ErrorMessage = "ExampleProperty is required!")]
public string ExampleProperty { get; set; }
}

控制者
public class DataController
{
public DataModel PostData(DataModel data)
{
if (ModelState.IsValid)
{
// This part is working fine..
return ProcessData(data);
}
else
{
// errs do only contain Exception.Messages not ErrorMessages..
string errs = string.Join(
"\n",
ModelState.Values
.SelectMany(s => s.Errors)
.Select(e => string.IsNullOrWhiteSpace(e.ErrorMessage) ? (e.Exception != null ? e.Exception.Message : null) : e.ErrorMessage)
.Where(s => !string.IsNullOrWhiteSpace(s))
.GroupBy(g => g).Select(s => s.Key + " (#" + s.Count() + ")"));

throw new Exception("...todo: fill in correct text...");
}
}
}

ModelState.Values.First()。错误
  • 异常包含:“在JSON中找不到必需属性'ExampleProperty'。路径[...]”
  • 但是ErrorMessage为空。

  • 有什么想法会导致这种情况吗?我做错了什么?

    最佳答案

    尝试使用此:

    public IHttpActionResult PostData(DataModel data)
    {
    if (ModelState.IsValid)
    {
    // This part is working fine..
    return Ok(ProcessData(data));
    }
    else
    {
    // errs do only contain Exception.Messages not ErrorMessages..
    string errs = ModelState.Select(x => x.Value.Errors)
    .Where(y=>y.Count>0)
    .ToList();
    return Ok(errs);
    }
    }

    如果所请求的模型 data有效,它将返回模型的响应
    如果模型无效,则返回 list of string和错误消息

    关于c# - .Net Web Api不显示必需属性的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51824601/

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