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

时间:2018-02-23 18:31:58

标签: asp.net validation asp.net-web-api c#-4.0 asp.net-web-api2

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

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

在api控制器中,我们验证模型如下:

  if (!ModelState.IsValid)
{



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

    throw new HttpResponseException(errorResponse);
}

我在邮递员中得到的是:

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

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

2 个答案:

答案 0 :(得分:0)

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

MSDN documentation

答案 1 :(得分:0)

例如,你的模型应该是这样的

[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 }
    });
}