我有下面的代码工作
[Required(ErrorMessage = "Price is required.")]
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "Price xx.xx")]
public decimal? productPrice { get; set; }
当页面与价格=空字段错误信息提交是“价格是必需的。”。 价格=超过9999的错误消息是“价格XX.XX”。
然而,当I型“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; }
您可以使用正则表达式尝试:
[RegularExpression(@"[0-9]*\.?[0-9]+", ErrorMessage = "{0} must be a Number.")]
你也可以尝试在数据注解扩展: http://dataannotationsextensions.org/Home/Wiki
或写自己的实现,这样的事: https://github.com/srkirkland/DataAnnotationsExtensions/blob/master/DataAnnotationsExtensions/DigitsAttribute.cs
更新与正则表达式(匹配9,999.99 $ | $ 0.70 | 0.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.")]
或者使用范围有轻微的修改建议@马丁(实际上是一个更好的解决方案):
[Range(typeof(Decimal), "0", "9999", ErrorMessage = "{0} must be a decimal/number between {1} and {2}.")]
首先,我想你会想你的范围属性更改为
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "{0} must be a decimal/number between {1} and {2}.")]
根据MSDN,这是使用RangeAttribute的有效途径。
第二:
“这个领域productPrice必须是一个数字。”
这实际上是不显眼的客户端JavaScript验证在踢。数已被证实后,您的验证范围将火。 您可以禁用数字验证器虽然我不建议这样做:
$.validator.methods.number = function (n, t) {
return true;
}
我想你可能会绊倒在jQuery中的错误。 该验证是争取您的验证属性所发出的东西。
我有以下特性:
[Display(ResourceType = typeof(TaxSetupResources), Name = "Model_Value")]
[RegularExpression(@"(^\d+$)|(^\.\d{1,4}$)|(^\d*\.\d{0,4}$)", ErrorMessageResourceName="Model_InvalidFormatForAmount", ErrorMessageResourceType=typeof(TaxSetupResources))]
public decimal? Value { get; set; }
使用这样的观点:
<div>
@Html.TextBoxFor(t => t.Tiers[i].Value, new { title = @Resources.TaxSetupResources.Model_ValueTip })
<br />@Html.ValidationMessageFor(t => t.Tiers[i].Value)
</div>
仅仅通过自身的值为“foo”的产生我的错误信息。 值0.075被接受。 的0.075的值产生“字段的值必须是数字”,同样的问题,你似乎有。
基于此SO文章 ,我加在文件准备好以下几点:
$(function () {
$.validator.methods.number = function (value, element) {
return parseFloat(value).toString() !== "NaN";
}
});
现在,我只得到我的错误消息,并且只有当预期(0.075被接受)。