【问题标题】:regularExpression with decimals in model for html.textboxforhtml.textboxfor 模型中带小数的正则表达式
【发布时间】:2017-04-10 08:20:27
【问题描述】:

当我必须在我的数据库中插入一个小数时,我遇到了 html.textboxfor 的问题,该数据库也设置为小数。

我试过这个:

[RegularExpression(@"^[0-9]+(\.[0-9]{1,3})$", ErrorMessage = "Valid Decimal number with maximum 3 decimal places.")]

但只有在我至少有 3 位小数 (1,123) 时才会接受它。

我需要它能够接受,{1 - 1,2 - 1,23 - 1,234}

我如何做到这一点?

我还没有找到一个我可以弄清楚如何使用的正则表达式生成器..

或者我在如何解决我的问题方面完全走错了方向?

我在模型中的价值:

 [RegularExpression(@"^[0-9]+(\.[0-9]{1,3})$", ErrorMessage = "Valid Decimal number with maximum 3 decimal places.")]
        [Required]
        public decimal Average { get; set; }

在我的表单中输入 html:

<div class="form-group">
        @Html.LabelFor(x => x.Average, "Gennemsnit")
        @Html.TextBoxFor(x => x.Average, new { @class = "form-control" })
        @Html.ValidationMessageFor(x => x.Average, "", new { @class = "text-danger" })@
    </div>

【问题讨论】:

  • 您似乎在) 之后错过了? 以使小数部分可选:@"^[0-9]+(\.[0-9]{1,3})?$"。请注意,您在示例中使用, 作为小数分隔符,而在正则表达式中,您有一个点。
  • 不适用于我需要的东西,当我只有 1 个小数或 2 个小数时它会出错,它只接受 3 个小数或不接受 ..
  • 也许 html.textboxfor 也验证了“平均”在我的模型中是小数这一事实?
  • 如果您的小数点分隔符在 ` 逗号中,您需要重新配置 $.validator(默认情况下,jquery.validate.js 验证数字时使用点作为小数点分隔符。

标签: c# regex asp.net-mvc decimal html-helper


【解决方案1】:

更新

确实正如 StephenMuecke 所说,我需要在 jquery 验证器中更改 $.validator。

所以我添加了这个:

(function () {

$.validator.methods.number = function (value, element) {
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:.\d{3})+)?(?:\,\d+)?$/.test(value);
}
})();

覆盖方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多