只需从Web API中的ModelState获取错误消息文本

时间:2019-04-11 15:59:17

标签: c# asp.net-core

我只想在ASP.Net Core 2.2的Web API中返回错误消息文本,

我使用以下代码返回值:

 if (!ModelState.IsValid)
            {
                return BadRequest(ModelState.Values);
            }

我得到以下答复:

[
    {
        "childNodes": null,
        "children": null,
        "key": "user.Username",
        "subKey": {
            "buffer": "user.Username",
            "offset": 5,
            "length": 8,
            "value": "Username",
            "hasValue": true
        },
        "isContainerNode": false,
        "rawValue": null,
        "attemptedValue": null,
        "errors": [
            {
                "exception": null,
                "errorMessage": "Username is required"
            }
        ],
        "validationState": 1
    }
]

我只需要错误消息文本即可响应,

{
'data': [
Username is required,
Password is required,
],

'status': 'error'
}

1 个答案:

答案 0 :(得分:1)

好吧,由于您使用的是ASP.NET Core 2.2,因此您实际上应该使用ApiController属性:

[ApiController]
public class FooApiController : ControllerBase

有了它,ASP.NET Core实际上会自动为您处理不良请求,因此您甚至根本不需要在操作中进行检查。

否则,您应该使用:

ModelState.ToDictionary(x => x.Key, x => x.Value.Errors);

或者,如果您只希望错误,而不将其锁定到各个属性:

ModelState.SelectMany(x => x.Value.Errors);