2008-09-17 65 views
2

我想在我的在线商店中显示我的产品的价格。 我目前做:将十进制值转换为以HTML格式显示的货币字符串的最佳方法

<span class="ourprice"> 
    <%=GetPrice().ToString("C")%> 
</span> 

如果用getPrice()返回小数。所以这现在返回一个值,例如“£12.00”

我认为正确的HTML为“12.00£”的输出为“&pound;12.00”,所以虽然这是呈现在大多数浏览器精细,一些浏览器(Mozilla的)显示此为$ 12.00。

(服务器位于英国,本地化已在web.config中适当设置)。

下面是一个改进,还是有更好的方法?

<span class="ourprice"> 
    <%=GetPrice().ToString("C").Replace("£","&pound;")%> 
</span> 

回答

2

£符号(U + 00A3)和html实体&#163;和&磅;应该都在浏览器中呈现相同。

如果浏览器不识别英镑,它可能不会识别实体版本。 它在ISO 8859-1(Latin-1)中,所以如果Mozilla浏览器无法呈现它(我的FF肯定可以),我会感到惊讶。

如果你看到一个$符号,很可能你有两件事情:1。 浏览器默认语言为en-us 2. Asp.net做自动切换语言环境。默认的web.config设置是一样的东西

<globalization culture="auto:en-us" uiCulture="auto:en-US" /> 

正如你(几乎可以肯定)希望英国唯一的价格,只需指定web.config中的语言环境:

<globalization culture="us" uiCulture="en-gb" /> 

(或页面级别: )

<%@Page Culture="en-gb" UICulture="en-gb" ..etc... %> 

此后,串等格式的String.Format( “{0:C}”,用getPrice()。)和用getPrice()的ToString( “C”)将使用EN-GB语言环境为ASP .net将为您设置currentCulture

(虽然如果你偏执,你可以在重载中指定en-gb文化)。

3

试试这个,它会使用你的区域设置应用程序:

<%=String.Format("{0:C}",GetPrice())%> 
+0

对于字符串输出“£0.00”没有被浏览器正确解释的问题,因为£符号在HTML中有点虚无do do,我们不想输出“&pound0.00”吗? – AndyM 2008-09-17 23:14:08

0

如果您需要明确地规定可以使用的CultureInfo并传递给字符串格式的本地化。

3

使用

GetPrice().ToString("C", CultureInfo.CreateSpecificCulture("en-GB")) 
1

你可以写这会从价格执行转换为字符串的函数。这样你就可以很好地控制输出。

区域设置的问题是它依赖于Web服务器而不依赖于Web浏览器。

0

只使用十进制值的ToString(“C2”)属性。在web.config中设置您的全球化 - 保持简单。

相关问题