我的一个视图模型有一个属性,GramWeight,定义为MVC3数据注释正则表达式验证属性失败
[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; }
当用户输入的值与一家领先的小数点就这一领域的验证失败,这样的为0.23而不是0.23。如果用户将0添加到前面,则验证通过。我曾以为这是我的正则表达式的问题,但我在这个http://regexhero.net/tester/了一些测试,它似乎工作得很好。
所以,如果它不是正则表达式,它是别的东西?我即将准备好使用javascript为用户追加0,如果他们不这样做。这是我最后的选择,但我正在考虑它。
我给它一个镜头。 –
好吧,看来当我将属性类型更改为字符串,然后它的工作。虽然这解释了这个问题,但我不确定我喜欢将我的所有小数域作为字符串表示的想法。我认为伟大的观点,但没有其他地方。由于我的模型经常作为域对象,这真的是打击。尽管感谢解决方案。 –
听起来像是一些JavaScript可能会被要求以零前缀,如果它带有小数点开始。你是否也使用客户端验证/输入过滤? –