我的模型有一个整数属性。使用视图中的基本@Html.EditorFor
生成一个文本框。第一次加载页面时,默认情况下输入值0
,可能是因为0
是实例化整数的默认值。如何防止MVC绑定0
?
使用弱类型属性不是正确的解决方案,也不是选择nullable
数据类型。 enums
也是如此:默认情况下,第一个选项最终被选中。
编辑以澄清:
原因纯粹是装饰性的。在门牌号字段中输入0是没有意义的,它永远不会正确,并且通常必须被所有用户删除。它还可以防止执行所需的字段验证。
答案 0 :(得分:3)
可空数据类型是正确的解决方案。
您应该使用带Nullable<int>
的模型而不是int属性。
如果该属性使用[Required]
属性(来自System.ComponentModel.DataAnnotations
命名空间)进行修饰,则仍然会强制用户输入值。
请记住,您绑定的模型应该是一个ViewModel - 即一个具有与从View传递数据相关的属性的模型。这可能(通常是)与存储在数据库中的模型(或业务模型/实体框架模型等)不同的模型!