gpt4 book ai didi

asp.net-mvc-4 - 如何验证货币字段?

转载 作者:行者123 更新时间:2023-12-03 00:21:39 24 4
gpt4 key购买 nike

我有一个带有此货币字段的 ASP.NET MVC-4 应用程序:

    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}", ConvertEmptyStringToNull = true)]
[DataType(DataType.Currency)]
public decimal? Price { get; set; }

这是我认为对应的部分:

    @Html.EditorFor(model => model.Price)
@Html.ValidationMessageFor(model => model.Price)

如果价格为 100 欧元, View 中的文本字段将显示:

100,00 €

这很好。

但是当我尝试进行回发时,我遇到了问题。验证器弹出并提示价格字段需要是数字。

只有 (1) 删除 € 符号并 (2) 替换小数分隔符(用点替换逗号),我才能解决此问题。

如果没有更好的解决方案,我想我可以更改 DataFormatString = "{0:F2}"以避免货币符号。

但是如何让验证器接受逗号作为小数点分隔符而不是(美国)点?

谢谢你们的帮助,伙计们!

最佳答案

所以,我能够使用来自 http://github.com/jquery/globalize 的 jQuery 全局化插件解决我的问题。 .

我将以下文件添加到我的 /scripts 文件夹中:

  • /scripts/globalize.js
  • /scripts/cultures/globalize.cultures.js
  • /sctipts/cultures/globalize.culture.de-DE.js

BundleConfig.cs中:

bundles.Add(new ScriptBundle("~/bundles/scripts/globalization").Include(
"~/Scripts/globalize*",
"~/Scripts/cultures/globalize*"));

_Layout.cshtml中:

@Scripts.Render("~/bundles/scripts/globalization")

以及_Layout.cshtml的脚本部分:

$.validator.methods.number = function (value, element) {
return this.optional(element) || !isNaN(Globalize.parseFloat(value));
}
$.validator.methods.range = function (value, element, param) {
return this.optional(element) || (Globalize.parseFloat(value) >= param[0] && Globalize.parseFloat(value) <= param[1]);
}

但是,我无法使货币符号与客户端验证一起使用,因此我还更改了数据注释,如下所示:

[DisplayFormat(ApplyFormatInEditMode = false, DataFormatString = "{0:c}", ConvertEmptyStringToNull = true)]

但就是这样。无需进行其他更改。我现在可以输入“1,49”或“18,77”等值,所有内容都会正确存储在我的数据库中。

关于asp.net-mvc-4 - 如何验证货币字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17730043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com