因此,如果您将空字符串发布到这样的控制器
<input type="text" value="" name="idList">
并尝试将其绑定到 List 发生非常奇怪的事情
有人遇到过这个问题吗?
为什么它将默认 int 值添加到列表中?
因此,如果您将空字符串发布到这样的控制器
<input type="text" value="" name="idList">
并尝试将其绑定到 List 发生非常奇怪的事情
有人遇到过这个问题吗?
为什么它将默认 int 值添加到列表中?
不,这并不奇怪,也不意外。这里的问题是您不了解引用类型(字符串)和值类型(int)之间的区别以及它们的默认值是什么。
int 不能为 null,并且必须始终具有值。在这种情况下,模型绑定器试图将一个空白字符串转换为您的列表并失败,因此它为该类型创建了一个“默认”值,对于 int 为 0(因为它不能为空)。如果模型绑定器转换失败,它总是使用类型的默认值,对于可空类型,默认值是 null,但对于值类型,它是默认值。
同时,您应该在 ModelState.Errors 列表中放置一个错误,通知您此错误。如果你想要 null,那么你需要一个 List 可为空的 int。