2013-11-12 7 views
2

У меня есть веб-сайт с разными языками. Внутри модель, у меня есть следующее заявление члена:Как остановиться с "." в десятичной ToString после изменений культуры

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

Когда я изменить культуру пользовательского интерфейса для ru-RU, я получаю следующее сообщение об ошибке:

0.00100001 is not a valid value for Decimal.

Как я могу сохранить свою информацию культуры и пользовательский интерфейс, как ru-RU, но все десятичные знаки являются периодом (.) Вместо запятой (,)?

Вот что я пробовал:

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

не работает ...

ответ

1

Там нет точного решения этой проблемы, так как в RangeAttribute преобразуется с использованием времени выполнения культуры. Вы должны либо принять потерю точности с помощью двойников:

[Range(0.01, 10000)] 

или отказаться от использования RangeAttribute полностью.

См. this link.

 Смежные вопросы

  • Нет связанных вопросов^_^