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 は確実にレンダリングできます)。

$ 記号が表示されている場合は、次の 2 つの問題がある可能性があります。1. ブラウザーの既定の言語は en-us です。2. Asp.net はロケールの自動切り替えを行っています。デフォルトの web.config 設定は次のようなものです

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

(ほぼ確実に) UK のみの価格が必要な場合は、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

10 進数値の ToString("C2") プロパティを使用するだけです。web.config でグローバリゼーションを設定します - シンプルに保ちます。

于 2008-09-17T23:46:51.627 に答える
0

ローカリゼーションを明示的に述べる必要がある場合は、CultureInfo を使用して、それを文字列フォーマッタに渡すことができます。

于 2008-09-17T23:06:20.210 に答える