鉴于模型具有布尔属性:
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);
}
The person.IsMale
属性的值是true
.
如果通过isMale: "foobar"
我收到无效类型错误
如果通过isMale: "0"
我收到无效类型错误
如果通过isMale: "1"
我收到无效类型错误
如果通过isMale: "True"
i get true
如果通过isMale: "False"
i get false
如果通过isMale: 0
i get false
如果通过isMale: 1
i get true
如果通过isMale: 34
(随机整数)我得到true
问题:
为什么它认为随机整数默认为true
以及如何改变这种行为来抱怨传入的类型不合适(int而不是bool)?
从你的例子来看,任何不是的数值0
被解释为true
这一点也不奇怪。
引用的版本"0"
and "1"
are string
类型,不能直接解析为bool
.
请参阅文档bool.Parse(string) https://learn.microsoft.com/en-us/dotnet/api/system.boolean.parse?view=netframework-4.8.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)