Невозможно переопределить сообщение об ошибке для [Требуется] в int, двойные атрибуты модели контроллера webapi. Получение JsonSerializationException - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть контроллер WebAPI, который принимает модель в качестве paylod. В полезной нагрузке у меня есть данные типа string, int и double. Для строковых полей я могу переопределить ErrorMessage для обязательной аннотации, но для int и double она не работает.

Model :

public sealed class BudgetPayload
{

    [JsonProperty("total_amount")]
    [Required(ErrorMessage = "test amn")]
    public double TotalAmount { get; set; }     

    [JsonProperty("entity_id")]
    [Required(ErrorMessage = "test ent")]
    public int EntityID { get; set; }

    [JsonProperty("currency")]
    [Required(ErrorMessage ="test curr")]
    public string Currency { get; set; }

}

Контроллер :

publi c asyn c Задача CreateBudget (запрос BudgetPayload) {

            if (ModelState.IsValid)
            {


            }
            else
            {

                string messages = string.Join("; ", ModelState.Values
                                    .SelectMany(x => x.Errors)
                                    .Select(x => x.Exception != null ? x.Exception.Message.Split(',')[0] : x.ErrorMessage.Split(',')[0]));
                messages = Regex.Replace(messages, "in json. path ''", "", RegexOptions.IgnoreCase);

                return base.Respond<List<string>>(messages.Split(';').ToList<string>(), HttpStatusCode.BadRequest);

            }
        }

Результат :

enter image description here

Исключение :

{"Обязательное свойство 'total_amount' не найдено в JSON. Path '', строка 12, позиция 1. "} System.Exception {Newtonsoft. Json .JsonSerializationException}

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