Asp.net mvc ASP.NET MVC美元货币验证
在我的ViewModel中,在包含美元货币的属性上有以下System.ComponentModel.DataAnnotations:Asp.net mvc ASP.NET MVC美元货币验证,asp.net-mvc,validation,currency,Asp.net Mvc,Validation,Currency,在我的ViewModel中,在包含美元货币的属性上有以下System.ComponentModel.DataAnnotations: [DisplayFormat(DataFormatString = "{0:C2}")] [Range(0.01, 100000, ErrorMessage = "Payment amount is required between .01 and $100,000.")] [DataType(DataType.Currency)] [DisplayName("P
[DisplayFormat(DataFormatString = "{0:C2}")]
[Range(0.01, 100000, ErrorMessage = "Payment amount is required between .01 and $100,000.")]
[DataType(DataType.Currency)]
[DisplayName("Payment Amount")]
public Double PrinAmount { get; set; } = 0.00;
当我输入值$10.005时,我从ModelState.IsValid检查中得到以下验证模型错误:
值“$10.005”对于付款金额无效
当我输入值10.005时,ModelState.IsValid等于true
我需要做什么来修改验证以捕获两种格式为无效?您可以使用正则表达式 [RegularExpression@^\d+\.\d{0,2}$]
上面的DataAnnotation确保了两位数。这已经得到了回答:@Kyle的可能重复-您认为我的问题是因为该属性的数据类型是double而不是decimal吗?正确,您不应该使用double表示金钱,而应该使用decimal。@Kyle-短期内,我将使用ilkerkaran提供的解决方案,因为在更改数据类型的过程中,除了使用正则表达式数据注释外,还需要做更多的工作。当我输入10.00时,该正则表达式将失败,但可以使用10.01。我需要允许美元货币金额为.00