我想在我的网上商店显示我的产品的价格。 我现在正在做:
<span class="ourprice">
<%=GetPrice().ToString("C")%>
</span>
GetPrice()返回小数。所以这当前返回一个值,例如“12.00£”
我认为输出“£12.00”的正确HTML是“£12.00
”,所以尽管在大多数浏览器中都可以正常使用,但某些浏览器(Mozilla)显示为12.00美元。
(服务器位于英国,在web.config中正确设置了本地化)。
以下是改进,还是有更好的方法?
<span class="ourprice">
<%=GetPrice().ToString("C").Replace("£","£")%>
</span>
答案 0 :(得分:3)
试试这个,它会使用您为应用程序设置的语言环境:
<%=String.Format("{0:C}",GetPrice())%>
答案 1 :(得分:3)
使用
GetPrice().ToString("C", CultureInfo.CreateSpecificCulture("en-GB"))
答案 2 :(得分:2)
£符号(U + 00A3),以及html实体&amp; #163;和&amp;磅;应该在浏览器中呈现相同的内容。
如果浏览器无法识别£,则可能无法识别实体版本。 它是在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将设置现在的文化为你
(尽管如果你是偏执狂,你可以在重载中指定en-gb文化。)
答案 3 :(得分:1)
您可以编写一个函数来执行从price到string的转换。这样您就可以对输出进行大量控制。
区域设置的问题在于它依赖于Web服务器,而不依赖于Web浏览器。
答案 4 :(得分:0)
如果您需要明确说明本地化,您可以使用CultureInfo并将其传递给字符串格式化程序。
答案 5 :(得分:0)
只使用十进制值的ToString(“C2”)属性。在web.config中设置全球化 - 保持简单。