2

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

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

其中 GetPrice() 返回小数。所以这目前返回一个值,例如“£12.00”

我认为输出“12.00 英镑”的正确 HTML 是“ &pound;12.00”,因此尽管这在大多数浏览器中渲染得很好,但某些浏览器 (Mozilla) 将其显示为 12.00 美元。

(服务器在英国,本地化在 web.config 中进行了适当设置)。

以下是改进,还是有更好的方法?

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

6 回答 6

3

试试这个,它将使用您为应用程序设置的语言环境:

<%=String.Format("{0:C}",GetPrice())%>
于 2008-09-17T23:03:10.500 回答
3

采用

GetPrice().ToString("C", CultureInfo.CreateSpecificCulture("en-GB"))
于 2008-09-17T23:06:35.390 回答
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 文化)。

于 2008-09-18T10:23:18.557 回答
1

您可以编写一个函数来执行从价格到字符串的转换。这样,您就可以对输出进行大量控制。

语言环境的问题在于它依赖于 Web 服务器,而不是依赖于 Web 浏览器。

于 2008-09-17T23:07:21.113 回答
0

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

于 2008-09-17T23:06:20.210 回答
0

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

于 2008-09-17T23:46:51.627 回答