阻止MVC绑定默认数据类型值

时间:2014-08-01 12:39:35

标签: asp.net-mvc

我的模型有一个整数属性。使用视图中的基本@Html.EditorFor生成一个文本框。第一次加载页面时,默认情况下输入值0,可能是因为0是实例化整数的默认值。如何防止MVC绑定0

使用弱类型属性不是正确的解决方案,也不是选择nullable数据类型。 enums也是如此:默认情况下,第一个选项最终被选中。

编辑以澄清:

原因纯粹是装饰性的。在门牌号字段中输入0是没有意义的,它永远不会正确,并且通常必须被所有用户删除。它还可以防止执行所需的字段验证。

1 个答案:

答案 0 :(得分:3)

可空数据类型是正确的解决方案。

您应该使用带Nullable<int>的模型而不是int属性。 如果该属性使用[Required]属性(来自System.ComponentModel.DataAnnotations命名空间)进行修饰,则仍然会强制用户输入值。

请记住,您绑定的模型应该是一个ViewModel - 即一个具有与从View传递数据相关的属性的模型。这可能(通常是)与存储在数据库中的模型(或业务模型/实体框架模型等)不同的模型!