MVC转换为可空的十进制字符串数组为我的模型

本文关键字:字符串 数组 我的 十进制 模型 转换 MVC | 更新日期: 2023-09-27 18:12:47

我有一个带有十进制属性的模型。每当我尝试编辑/创建模型的实例时,当输入一个可空的十进制字段时,我在验证时得到一个错误。

当我输入1,5时,它说值必须是一个数字(正确的行为)。

当我输入1.5,然而,我得到一个假的模型状态,由于"模型无效"。设置一个断点并检查modelstate中该项的值,可以发现原始值是string[1]。这里的错误如下:'1,5'的值对这个字段无效

有人知道是什么引起的吗?

MVC转换为可空的十进制字符串数组为我的模型

问题是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