模型Binder:属性中的无效值使模型为null

时间:2016-04-30 10:52:05

标签: asp.net-core

我有以下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?

1 个答案:

答案 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