我的一个视图模型有一个属性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,如果他们没有这样做。这是我最后的选择,但我正在考虑它。
答案 0 :(得分:2)
是因为它是十进制类型,您是否尝试将GramWeight
更改为字符串只是为了查看验证器在这种情况下的作用?
答案 1 :(得分:0)
对于那些需要更好解决方案的人来说,这是一个正确的正则表达式来验证十进制数:
[RegularExpression(@"[-+]?[0-9]*\.?[0-9]?[0-9]")]
此正则表达式在点符号前需要一个数字(在您的情况下为零),并允许最多2位小数。