Просто получите текст сообщения об ошибке от modelstate в веб-интерфейсе. - PullRequest
0 голосов
/ 11 апреля 2019

Я хочу вернуть только текст сообщения об ошибках в веб-интерфейсе ASP.Net Core 2.2,

Я использую следующий код для возврата значений:

 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 Ответ

1 голос
/ 11 апреля 2019

Ну, так как вы используете 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...