Rav*_*Ram 12 asp.net asp.net-mvc data-annotations
我有以下代码工作
[Required(ErrorMessage = "Price is required.")]
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "Price xx.xx")]
public decimal? productPrice { get; set; }
Run Code Online (Sandbox Code Playgroud)
当提交页面时,Price = EMPTY字段错误消息为"需要价格".价格=超过9999错误消息是"价格xx.xx".
但是,当我输入'aaaa'时,错误消息是 "字段productPrice必须是数字".
如果键入不正确,我该如何更改消息?例如:"价格必须是1-9999之间的小数/数字.
----更新:---- 以下代码使用
NULL,非十进制,在范围之间,但不使用".1".
[Required(ErrorMessage = "Price is required.")]
[RegularExpression(@"[0-9]*\.?[0-9]+", ErrorMessage = "Price must be a Numbers only.")]
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "Price must be a decimal/number between {1} and {2}.")]
public decimal? productPrice { get; set; }
Run Code Online (Sandbox Code Playgroud)
JOB*_*OBG 12
您可以尝试使用正则表达式:
[RegularExpression(@"[0-9]*\.?[0-9]+", ErrorMessage = "{0} must be a Number.")]
Run Code Online (Sandbox Code Playgroud)
您还可以尝试使用Data Annotations Extensions:http: //dataannotationsextensions.org/Home/Wiki
或编写自己的实现,如下所示:https: //github.com/srkirkland/DataAnnotationsExtensions/blob/master/DataAnnotationsExtensions/DigitsAttribute.cs
更新 与REGEX(匹配$ 9,999.99 | $ 0.70 | .1)
[RegularExpression(@"^\$?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$", ErrorMessage = "{0} must be a Number.")]
Run Code Online (Sandbox Code Playgroud)
或者使用Range稍微修改@Martin建议(实际上是一个更好的解决方案):
[Range(typeof(Decimal), "0", "9999", ErrorMessage = "{0} must be a decimal/number between {1} and {2}.")]
Run Code Online (Sandbox Code Playgroud)
首先,我想你会想要将Range属性更改为
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "{0} must be a decimal/number between {1} and {2}.")]
Run Code Online (Sandbox Code Playgroud)
根据MSDN,这是使用RangeAttribute的有效方法.
第二:
"现场产品价格必须是一个数字."
这实际上是不引人注意的客户端JavaScript验证.您的范围验证器将在验证号码后触发.您可以禁用数字验证器,但我不建议这样做:
$.validator.methods.number = function (n, t) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
41704 次 |
最近记录: |