我有一个带小数属性的模型。每当我尝试编辑/创建模型的实例时,在输入可以为空的十进制字段时验证时会出现错误。
当我输入1,5时,它表示值必须是数字(正确的行为)。
当我输入1.5时,由于“模型无效”,我得到了错误的Modelstate。设置断点并在模型状态中检查此项的值会显示原始值为字符串[1]。 此处的错误如下:“1,5”的值对此字段无效
任何人都知道是什么原因引起的?
答案 0 :(得分:1)
问题是javascript使用点(。)表示浮动数字,c#使用逗号(,)。
我用这段代码解决了这个问题:
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
$.validator.methods.range = function (value, element, param) {
var globalizedValue = value.replace(",", ".");
return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]);
}
$.validator.methods.number = function (value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value);
}
您必须在项目中加入jquery.validate.min.js和jquery.validate.unobtrusive.min.js。