ASP.NET Web 控件在不同的文化设置中呈现错误
ASP.NET webcontrols render wrong in different culture settings
我有一个自定义的网页控件。
循环中的一些代码:
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
是正确的。
这就是问题所在 - 我该如何解决?
您需要将double正确转换为string,例如:
dcell.Style["height"] = cellHeight.ToString("F", CultureInfo.CreateSpecificCulture("eu-ES")) + "pt";
或者像这样:
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
dcell.Style["height"] = cellHeight.ToString(nfi) + "pt";
我有一个自定义的网页控件。
循环中的一些代码:
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
是正确的。
这就是问题所在 - 我该如何解决?
您需要将double正确转换为string,例如:
dcell.Style["height"] = cellHeight.ToString("F", CultureInfo.CreateSpecificCulture("eu-ES")) + "pt";
或者像这样:
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
dcell.Style["height"] = cellHeight.ToString(nfi) + "pt";