asp.net 模型验证未在Web API中返回正确的错误消息

6tdlim6h  于 2023-04-22  发布在  .NET
关注(0)|答案(2)|浏览(136)

bounty还有3天到期,回答此问题可获得+250声望奖励,RichardTheKiwi希望引起更多关注此问题:我有同样的问题-同样的软件,两个服务器。一个显示“发生错误”,另一个显示模型状态错误

我有一个模型(myModel),它在myProperty上有以下数据注解

[Required(ErrorMessage = "myProperty is required.")]

在API控制器中,我们正在验证模型,如下所示:

if (!ModelState.IsValid)
{


   var errorResponse = new HttpRequestMessage()
.CreateErrorResponse(HttpStatusCode.BadReques, ModelState);

    throw new HttpResponseException(errorResponse);
}

我从 Postman 那里得到的是:

{
    "Message": "The request is invalid.",
    "ModelState": {
        "myModel": [
            "An error has occurred."
        ]
    }
}

我想从数据注解中获取错误消息。

bjp0bcyl

bjp0bcyl1#

您可以从ModelState.Errors属性获取模型状态验证的错误消息,它是ModelError的集合。
MSDN文档

gmol1639

gmol16392#

例如,您的模型应该像这样

[Required]
[DataType(DataType.EmailAddress)]
[EmailAddress]
public string  EmailAddress { get; set; }

和你在你的行动方法

if (!ModelState.IsValid) {
    var error = ModelState.Where(e => e.Value.Errors.Count > 0).Select(e => new { Name = e.Key, Message = e.Value.Errors.First().ErrorMessage }).ToList();
    return Request.CreateResponse(HttpStatusCode.BadRequest, new Dictionary<string, object>()
    {
        { "ErrorList", error }
    });
}

相关问题