2015-08-02 2 views
1

В .NET 4.0, веб-форм и IIS 8 Я имею в web.config это:IIS неправильно PT-PT

<globalization culture="pt-PT" uiCulture="pt-PT" /> 

Когда я в C# это:

ltNumber.Text = (12345.12).ToString("N"); 

I получите это: 12 345,12 Но выход должен быть 12.345,12

Это стало плохо выглядеть на окнах 10. Окна 7 все было в порядке. Что может быть неправильным?

+0

В web.config У меня есть: globalization culture = "pt-PT" uiCulture = "pt-PT" – Hugo

ответ

2

The numeric ("N") format specifier использует ваши настройки CurrentCulture.

Это означает, что у вашего CurrentCulture есть пробел, NumberGroupSeparator и , как у NumberDecimalSeparator.

enter image description here

В качестве решения, вы можете Clone ваши CurrentCulture, установить эти свойства, что вы хотите, и использовать что культуры в качестве второго параметра в методе ToString. Подобно;

var clone = (CultureInfo) CultureInfo.CurrentCulture.Clone(); 
clone.NumberFormat.NumberDecimalSeparator = ","; 
clone.NumberFormat.NumberGroupSeparator = "."; 
ltNumber.Text = (12345.12).ToString("N", clone); // 12.345,12 

Я не думаю, что эти свойства изменены в зависимости от версий операционной системы. Все о том, какие настройки культуры вы используете.

+0

Ну, это возможное решение, но я думаю, что это не имеет смысла, потому что они экспериментируют с IIS Express, появляется NumberGroupSeparator с точкой. Кроме того, на win7 все было в порядке. Я думаю, что это проблема в IIS. Как ты объясняешь это? – Hugo

+0

При использовании IIS Express он использует настройки формата вашего пользователя, и вы должны изменить символ группировки цифр на точку. Системное значение по умолчанию для pt-PT - это пробел –

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