给定模型具有布尔属性:
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)? 最佳答案
从您的示例来看,任何不是0
的数值都将解释为true
,这一点都不奇怪。
带引号的版本"0"
和"1"
是string
类型,不能直接解析为bool
。
请参阅bool.Parse(string)
的文档。