MVC3数据注释正则表达式验证器属性失败

时间:2011-08-04 21:41:10

标签: regex asp.net-mvc-3 validation jquery-validate

我的一个视图模型有一个属性GramWeight,定义为

    [Display(Name="Gram Weight")]
    [RegularExpression(@"[0-9]*\.?[0-9]+", ErrorMessage = "Gram Weight must be a Number.")]
    [Range(0, 9999.99, ErrorMessage = "Value must be between 0 - 9,999.99")]
    public decimal? GramWeight { get; set; }

当用户输入带有小数点后导值的值时,此字段的验证失败,例如.23而不是0.23。如果用户将0添加到前面,则验证通过。我曾经认为这是我的正则表达式的一个问题,但我在这个http://regexhero.net/tester/进行了一些测试,看起来效果很好。

所以,如果它不是正则表达式,那还有别的吗?我准备使用javascript为用户添加0,如果他们没有这样做。这是我最后的选择,但我正在考虑它。

2 个答案:

答案 0 :(得分:2)

是因为它是十进制类型,您是否尝试将GramWeight更改为字符串只是为了查看验证器在这种情况下的作用?

答案 1 :(得分:0)

对于那些需要更好解决方案的人来说,这是一个正确的正则表达式来验证十进制数:

[RegularExpression(@"[-+]?[0-9]*\.?[0-9]?[0-9]")]

此正则表达式在点符号前需要一个数字(在您的情况下为零),并允许最多2位小数。