2008-09-17 9 views
2

私のオンラインストアで私の商品の価格を表示したい。 私は現在やっている:GetPrice()は小数点以下を返し小数点値を通貨文字列に変換してHTMLに表示する最も良い方法

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

。これは現在値を返します。 "£12.00"

"£12.00"の出力の正しいHTMLは "&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")は、ASPとしてエンGBロケールを使用します.netはあなたのためにcurrentCultureを設定します

(ただし、編集不能な場合はen-gbカルチャを過負荷に指定できます)。

3

それはアプリケーションのロケール設定を使用します、これを試してください:あなたは明示的にあなたがのCultureInfoを使用すると、文字列フォーマッタにそれを渡すことができローカライズを述べる必要がある場合

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

£記号がHTMLでちょっと怪しいので、 "£0.00"という文字列がブラウザによって正しく解釈されないという問題については、 "&pound0.00"を出力しませんか? – AndyM

0

3

使用

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

あなたは文字列に価格からの変換を実行することになり機能を書くことができます。このようにして、出力をコントロールすることができます。

ロケールの問題は、Webサーバーに依存し、Webブラウザに依存しないことです。

0

は、10進値のToString( "C2")プロパティを使用するだけです。 web.configでグローバリゼーションを設定する - それを簡単に保つ。

関連する問題