gpt4 book ai didi

c# - 具有全局化的十进制数据类型的 MVC 模态验证错误消息

转载 作者:行者123 更新时间:2023-11-30 17:47:00 26 4
gpt4 key购买 nike

我猜这个主题很好地解释了需求。但我会尝试解释更多......

首先我想提一下,我用 nuget 安装了 globalize js 库。所以在小数域,人们可以用“.”来添加数字。和“,”取决于它们在浏览器中的区域设置。这是我设法解决的第一个问题。

第二个问题是,根据区域设置显示错误信息。我使用资源文件来做到这一点,并且在我意识到某些消息没有使用资源文件中的字符串之前一直运行良好。例如,当我写一个字母而不是一个数字(我说的是那个小数域)时,错误信息是

The field Price must be a number. 

在看到一些与我的问题类似的问题之前,我不知道如何更改它。有些人用正则表达式解决了这个问题。我可以这样做,但你看,我为其他事情设置了全局化,现在我必须决定用户是要输入“,”还是“。”在十进制字段中。我只是不想那样做。

这是我用来在模态类中创建该字段的代码

[Required(ErrorMessageResourceType = typeof(Resources.Validation), ErrorMessageResourceName = "Required")]
[Display(Name = "Fiyat")]
[DataType(DataType.Currency, ErrorMessage = "Fiyat geçerli değil.")] // I know that
doesn't work, but couldn't really figure out why there is an error message for datatype at all.
[Range(0, 100, ErrorMessageResourceType = typeof(Resources.Validation), ErrorMessageResourceName = "Range")]
public decimal Price { get; set; }

能否请您给我一些想法,如何在用户输入字母时显示正确的消息(使用资源文件的正确语言),或者只使用“,”或“。”当他们的语言环境不允许他们时?

最佳答案

就像我在评论中所说的那样,我遇到了同样的问题,最后我做了以下事情:

使用正则表达式只是为了知道这是否是一个有效的数字(接受逗号/点作为多种文化的小数点分隔符)然后留下范围数据注释来测试数字是否真的有效(使用或不使用逗号/点) 和范围本身。似乎工作得很好:)

[Display(Name = "TdPrime", ResourceType = typeof(Resources.Somethings.Something))]       
[RegularExpression(@"-?(?:\d*[\,\.])?\d+",
ErrorMessageResourceName = "DataType_Number",
ErrorMessageResourceType = typeof(Validations))]
[Range(0, 999.9999,
ErrorMessageResourceName = "RangeAttribute_ValidationError",
ErrorMessageResourceType = typeof(Validations))]
[DisplayFormat(DataFormatString = "{0:#.####}", ApplyFormatInEditMode = true)]
public decimal? TdPrime { get; set; }

看来您决定使用 angular,但至少下次您将有更多的解决方案可供选择:)

关于c# - 具有全局化的十进制数据类型的 MVC 模态验证错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25268299/

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