Учитывая, что модель имеет логическое свойство:
public class Person
{
public string Name { get; set; }
public bool IsMale { get; set; }
}
При попытке отправить следующую полезную нагрузку:
{
"name": "Bob",
"isMale": 12345 // any random integer
}
Для простого действия:
[HttpPost]
public IActionResult Post([FromBody] Person person)
{
if (ModelState.IsValid)
return Ok();
return BadRequest(ModelState);
}
Свойство person.IsMale
получает значение true
.
При прохождении isMale: "foobar"
получаю ошибку неверного типа
При прохождении isMale: "0"
я получаю ошибку недопустимого типа
При прохождении isMale: "1"
я получаю ошибку недопустимого типа
При прохождении isMale: "True"
я получаю true
При прохождении isMale: "False"
я получаю false
При прохождении isMale: 0
я получаю false
При прохождении isMale: 1
я получаю true
Если передать isMale: 34
(случайное целое число), я получу true
Вопрос:
Почему он считает, что случайное целое число по умолчанию равно true
и как изменить это поведение, чтобы пожаловаться на то, что переданный тип не подходит (int вместо bool)?