如何在回发时正确验证价格字段? 我已经检查过:How can I validate a currency field?但这不符合我的期望。
我尝试过(和一些变化):
[Range(0, (double)decimal.MaxValue)]
[DataType(DataType.Currency, ErrorMessage = "...")]
public decimal? Price {get; set;}
问题:
在我必须创建自己的自定义验证或正则表达式之前,我正在寻找内置方法。类似的东西:
[EmailAddress()]
public string ContactEmail {get; set; }
这非常适合我!
答案 0 :(得分:1)
您可以使用FluentValidation。您可以创建自己的验证器类,继承自:AbstractValidator,在构造函数中,您可以放置所有逻辑。
MyCurrencyValidatorMyClass : AbstractValidator<MyClass>
{
MyCurrencyValidatorMyClass()
{
RuleFor(x => x.MyField).NotNull().GreatherThan(0);
//All your rules
}
}
var validator = new MyCurrencyValidatorMyClass();
var myClassVar = new MyClass();
validator.Validate(myClassVar);
您也可以将验证器与MVC集成,以供参考,请参阅 https://fluentvalidation.codeplex.com/wikipage?title=mvc
答案 1 :(得分:0)
您可以在Price
型号属性上试用此RegEx。它将检查&#34; XXXX.XX&#34;格式的字符串。其中X是数字(0-9):
[RegularExpression(@"\d{1,20}(\.\d{1,2})?", ErrorMessage = "Invalid Price. Please use the format of XXXX.XX.")]
第一个范围d{1, 20}
允许小数位前最多二十位数。第二个范围d{1, 2}
最多允许两位小数。