当数据类型为int时,值''无效

时间:2016-09-02 10:24:33

标签: asp.net-mvc

我正在尝试在表单验证上显示友好的错误消息。 我在模型类中有一个带注释的属性:

[Required(ErrorMessage="The number attribute is required")]
public int Level { get; set; }

它不起作用,但当我将数据类型更改为string时,会显示注释的错误消息。这是否意味着不支持int

2 个答案:

答案 0 :(得分:4)

您将获得0到0,这就是为什么验证看起来不适用于该类型 - 0是一个值。

尝试将类型更改为可为空的int(int?),然后就可以了。

答案 1 :(得分:0)

如果用户的输入是空字符串,则该值将转换为null。无法将空值赋给int类型变量。因此,在将null值绑定到int变量之前,甚至在达到EF验证之前,已经抛出了错误。因此[Required(ErrorMessage="The number attribute is required")]代码不会被执行。

使用nullable int(int?)接受用户的null和空值。随后,将执行EF验证,您可以执行"没有空输入"使用[Required]注释进行验证。