Каков наилучший способ обработки ошибок привязки / проверки модели (JSON.NET)? - PullRequest
1 голос
/ 06 июня 2019

Если у нас есть модель с ненулевыми свойствами, такими как:

public class MyModel {
   public string Name {get;set;}
[MinLength(7, ErrorMessage = "DisplayName should be at least 7 chars long")]
   public string DisplayName {get; set;]
   public int Age {get;set;}
}

и если мы передадим ей этот json:

{
  "name":"Bob",
  "displayName":"MyNameIsBob"
}

, мы получим ужасные сообщения об ошибках отИсключения сериализатора JSON.NET.

Теперь у меня есть фильтр, который обрабатывает проверку и помещает все сообщения об ошибках (поступающие из DataAnnotations) в ответ.

, но если json.netне удается десериализовать - исключение выдается раньше, и очень недружественные сообщения попадают в состояние модели.

один из способов смягчить это состоит в том, чтобы сделать все ненулевые свойства обнуляемыми с атрибутом [Required] (для действительно необходимых).).Это покрывает некоторые случаи, но я полагаю, что существует множество случаев, когда даже обнуляемые значения могут по-прежнему вызывать исключение json.net.

Существует ли какой-либо последовательный, наилучший способ обработки этих проблем?

=== ОБНОВЛЕНИЕ ===

что я имел в виду, если что-либо, кроме:

  1. возраст, не включенный в полезную нагрузку json
  2. возраст, действительныйцелое число

включено для возраста - оно выдаст исключение с сообщением типа: «Не удалось преобразовать {что-то неправильное} в целое число: {что-либо}."

, например,если вы отправите ноль или «1» для возраста, он выдаст эту ошибку.

сейчас, я знаю, что это двухэтапный процесс десериализации первого форматера (и выбрасывания этих исключений), а затем связывания и ошибки аннотации данныхсообщения, поступающие в игру.

Мне просто интересно, как наиболее удачно объединить эти два и избежать этих довольно уродливых сообщений.

надеюсь, что прояснилось

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