我遇到与this question
类似的问题我正在使用 MVC 。我在我的ViewModel中添加了一个正则表达式来强制用户输入一个带有1或2个小数位的数字。我认为我的正则表达式中一定有错误,但同样的声明在其他地方工作正常。
如果我输入0.00作为我的费率,当我提交表单时, ModelState.IsValid返回为false 。
[RegularExpression(@"^(\d+\.\d{1,2})$", ErrorMessage = "Please enter valid rate with 1 or 2 decimal places")]
public double DecimalRate { get; set; }
根据this question中的建议,我已通过在Visual Studio中的ModelState.IsValid设置调试并检查错误来验证此速率是否导致错误。
我预感它可能与 double 类型的属性有关?
答案 0 :(得分:1)
这种情况正在发生,因为您的媒体资源的数据类型为double
(不是string
),因此它并不代表一系列字符。它代表一个数值。如果您的输入为0.00
,那么它将代表值0
,与正则表达式不匹配。我怀疑你也会遇到像3.00
这样的数字相同的问题。
如果您需要用户的输入采用特定格式,请将字段更改为string
,然后在需要将其转换为数字时使用Convert.ToDouble()
。