Есть ли способ построить собственное сообщение об ошибке для ошибок привязки модели по умолчанию, хотите избавиться от строки и позиции в сообщении - PullRequest
1 голос
/ 12 апреля 2019
{
    "errors": {
        "price": [
            "Could not convert string to decimal: dasdfasdf. Path 'price', line 3, position 22."
        ],
        "userId": [
            "Could not convert string to integer: hsad. Path 'userId', line 6, position 27."
        ]
    },
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "|bcaa98d957e1c04181000489a0bc4950.9753735a_"
}

Я попробовал пользовательское связующее для модели, но мне это нужно для определенных свойств в модели.Я также попробовал JsonConvert со свойством, но не смог найти способ вставить сообщение об ошибке в состояние модели

1 Ответ

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

Вы можете настроить ответ валидатора ModelState для ApiController, настроив InvalidModelStateResponseFactory из ApiBehaviorOptions следующим образом:

services.Configure<ApiBehaviorOptions>(options =>
{
    options.InvalidModelStateResponseFactory = actionContext => 
    {
        var errors = actionContext.ModelState
            .Where(e => e.Value.Errors.Count > 0)
            .Select(e => new Error
            {
            Name = e.Key,
            Message = e.Value.Errors.First().ErrorMessage
            }).ToArray();

        return new BadRequestObjectResult(errors);
    }
});

Кроме того, вы можете узнать больше о поведении ApiController здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...