Если у нас есть модель с ненулевыми свойствами, такими как:
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.
Существует ли какой-либо последовательный, наилучший способ обработки этих проблем?
=== ОБНОВЛЕНИЕ ===
что я имел в виду, если что-либо, кроме:
- возраст, не включенный в полезную нагрузку json
- возраст, действительныйцелое число
включено для возраста - оно выдаст исключение с сообщением типа: «Не удалось преобразовать {что-то неправильное} в целое число: {что-либо}."
, например,если вы отправите ноль или «1» для возраста, он выдаст эту ошибку.
сейчас, я знаю, что это двухэтапный процесс десериализации первого форматера (и выбрасывания этих исключений), а затем связывания и ошибки аннотации данныхсообщения, поступающие в игру.
Мне просто интересно, как наиболее удачно объединить эти два и избежать этих довольно уродливых сообщений.
надеюсь, что прояснилось