如何留在“。”文化变化后的十进制ToString

时间:2013-11-12 17:18:10

标签: c# localization uiculture

我有一个不同语言的网站。在模型中,我有以下成员声明:

[Required(ErrorMessageResourceType = typeof(ViewRes.GlobalResource), ErrorMessageResourceName = "awr1")]
[Range(typeof(decimal), "0.00100001", "10000", ErrorMessageResourceType = typeof(ViewRes.GlobalResource), ErrorMessageResourceName = "TotalMoneyMinMaxValidation")]
public decimal TotalMoney { get; set; }

当我将UI文化更改为ru-RU时,我收到以下错误:

  

0.00100001不是十进制的有效值。

如何将我的文化信息和用户界面保持为ru-RU但是所有小数都是句点(。)而不是逗号(,)?

这是我尝试过的:

CultureInfo ci = new CultureInfo("ru-RU");
ci.NumberFormat.NumberDecimalSeparator = ".";
Thread.CurrentThread.CurrentUICulture = ci;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name);

不工作......

1 个答案:

答案 0 :(得分:1)

此问题没有确切的解决方法,因为RangeAttribute是使用运行时文化转换的。您需要使用双精度接受精度损失:

[Range(0.01, 10000)]

或完全放弃使用RangeAttribute

请参阅this link