我有以下ASP.NET核心控制器操作:
public async Task<IActionResult> Post([FromBody]Model model) { }
该模型如下:
public class Model {
public String Name { get; set; }
public Int32? Age { get; set; }
}
然后我使用Angular试图发布一个无效的模型:
model = { name: "John", age: "Ab }
在我的控制器上,模型变为空。如果我使用age: 30
,则模型会定义值。
如果年龄有无效值,不应该定义模型而且Age有Int32吗?默认值,例如,null?
答案 0 :(得分:1)
这是预期的行为。 Int32? Age
接受空值但不接受无效值。具有无效年龄值的已发布模型会尝试将值转换为整数,但这会失败,因为该值不是整数。
使用以下json:{ name: "John", age: "Ab }
,ModelState包含两个错误:
Unterminated string. Expected delimiter: \
Unexpected end when deserializing object
给出正确的字符串值{ name: "John", age: "test"}
ModelState包含一个错误:
Could not convert string to integer: test