2008-09-17 8 views
2

Ich möchte Preise für meine Produkte in meinem Online-Shop anzeigen. Ich bin derzeit tun:Beste Möglichkeit, einen Dezimalwert in eine Währungszeichenfolge für die Anzeige in HTML zu konvertieren

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

Wo GetPrice() eine Dezimalzahl zurück. Dies liefert momentan einen Wert von z.B. "£ 12,00"

Ich denke, die korrekte HTML für eine Ausgabe von "£ 12.00" ist "&pound;12.00", also, obwohl dies in den meisten Browsern gut, einige Browser (Mozilla) zeigen dies als 12,00 $.

(Der Server befindet sich in Großbritannien, die Lokalisierung ist in web.config entsprechend eingestellt).

Ist das unten eine Verbesserung, oder gibt es einen besseren Weg?

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

Antwort

2

Das £ -Symbol (U + 00A3) und die HTML-Entitäten & # 163; und & Pfund; sollte alles in einem Browser rendern.

Wenn der Browser £ nicht erkennt, werden die Entity-Versionen wahrscheinlich nicht erkannt. Es ist in ISO 8859-1 (Latin-1), so würde ich mich wundern, wenn ein Mozilla-Browser es nicht rendern kann (mein FF kann es sicherlich). Wenn Sie ein $ -Zeichen sehen, haben Sie wahrscheinlich zwei Dinge: 1. Die Standardsprache des Browsers ist en-us Die Standard-web.config Einstellung ist so etwas wie

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

Wie Sie (fast sicher) nur in Großbritannien Preise, füllen Sie einfach das Gebietsschema in web.config angeben:

<globalization culture="us" uiCulture="en-gb" /> 

(oder auf Seitenebene:

) die Zeichenfolge Formate wie String.Format ("{0: C}", GetPrice()
<%@Page Culture="en-gb" UICulture="en-gb" ..etc... %> 

Danach.) und GetPrice() ToString ("C") wird die de-DE locale als ASP .net hat die currentCulture für Sie gesetzt

(obwohl Sie die en-gb-Kultur in den Überladungen angeben können, wenn Sie paranoid sind).

3

dies versuchen, wird es Ihre locale-Set für die Anwendung verwenden:

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

Was ist mit dem Problem der String-Ausgabe "£ 0.00" nicht richtig vom Browser interpretiert, da das £ -Symbol in HTML ein wenig wackelig ist, wollen wir nicht "& Pfund 0.00" ausgeben? – AndyM

0

Wenn Sie explizit die Lokalisierung angeben, müssen Sie die Culture verwenden können und dass Formatierer auf den String übergeben.

3

Verwenden

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

Sie eine Funktion schreiben könnte, die die Umwandlung von Preis zu Zeichenfolge durchführen würde. Auf diese Weise haben Sie viel Kontrolle über die Ausgabe.

Das Problem mit der Ländereinstellung ist, dass es webserverabhängig und nicht webbrowserabhängig ist.

0

Verwenden Sie einfach die ToString ("C2") - Eigenschaft eines Dezimalwerts. Stellen Sie Ihre Globalisierung in der web.config ein - halten Sie es einfach.