Asp.net 将十进制值转换为货币字符串以在HTML中显示的最佳方法

Asp.net 将十进制值转换为货币字符串以在HTML中显示的最佳方法,asp.net,browser,localization,currency,Asp.net,Browser,Localization,Currency,我想在我的网上商店显示我的产品的价格。 我目前正在做: <span class="ourprice"> <%=GetPrice().ToString("C")%> </span> 尝试此操作,它将使用应用程序的区域设置: <%=String.Format("{0:C}",GetPrice())%> 如果需要明确说明本地化,可以使用CultureInfo并将其传递给字符串格式化程序。使用 GetPrice().ToString("C",

我想在我的网上商店显示我的产品的价格。 我目前正在做:

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

尝试此操作,它将使用应用程序的区域设置:

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

如果需要明确说明本地化,可以使用CultureInfo并将其传递给字符串格式化程序。

使用

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

您可以编写一个函数来执行从price到string的转换。通过这种方式,您可以对输出进行大量控制

locale的问题在于它依赖于web服务器,而不是web浏览器。

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

符号(U+00A3)和html实体£;英镑;应该在浏览器中呈现相同的内容

如果浏览器无法识别实体,则可能无法识别实体版本。 它在ISO8859-1(拉丁语-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" />

(或在页面级别:)


此后,字符串格式,如string.Format(“{0:C}”、GetPrice()和GetPrice()。ToString(“C”)将使用en GB语言环境,因为asp.net将为您设置currentCulture


(虽然如果你有妄想症,可以在重载中指定en-gb区域性)。

浏览器无法正确解释字符串输出“£0.00”,因为“£符号在HTML中有点不稳定,我们不想输出“£0.00”吗?
  <globalization   culture="us"  uiCulture="en-gb" />
  <%@Page Culture="en-gb" UICulture="en-gb" ..etc... %>