Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC美元货币验证_Asp.net Mvc_Validation_Currency - Fatal编程技术网

Asp.net mvc ASP.NET MVC美元货币验证

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

在我的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("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