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