Веб-элементы управления ASP.NET отображаются неправильно в различных настройках культуры
У меня есть собственный веб-контроль.
Некоторый код в цикле:
double cellHeight = 12.34;
Label dcell = new Label();
dcell.Style["height"] = cellHeight + "pt";
dcell.Text = cellHeight;
Если я использую CultureInfo("cs-CZ")
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("cs-CZ");
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("cs-CZ");
после рендера вышел html
<span style="height:11,75pt">11,75</span>
на самом деле я ожидал:
<span style="height:11.75pt">11,75</span>
height:11,75pt
Совершенно неправильно, когда отображается в браузере, на самом деле браузер не считает 11,75pt
как 11.75pt
,
Однако мне нужно, чтобы текстовое поле отображалось на основе информации о культуре: текстовое поле отображает 11,75
это правильно.
Так что это проблема - как я могу исправить?
1 ответ
Решение
Вам нужно правильно преобразовать double в строку, например:
dcell.Style["height"] = cellHeight.ToString("F", CultureInfo.CreateSpecificCulture("eu-ES")) + "pt";
Или вот так:
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
dcell.Style["height"] = cellHeight.ToString(nfi) + "pt";