Frage

will ich die Preise für meine Produkte in meinem Online-Shop zeigen. Ich bin derzeit tun:

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

Wo GetPrice () eine Dezimalzahl zurück. Also das gibt momentan einen Wert z.B. "£ 12.00"

Ich denke, die richtige HTML für eine Ausgabe von „£ 12.00“ „&pound;12.00“ ist, so dass, obwohl dies in den meisten Browsern rendert, einige Browser (Mozilla) zeigen dies als $ 12.00.

(Der Server ist in Großbritannien, mit Lokalisierung in geeigneter Weise in web.config eingestellt ist).

Ist der unter einer Verbesserung, oder gibt es einen besseren Weg?

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

Lösung

Das £ Symbol (U + 00A3) und die HTML-Entities & # 163; und & Pfund; sollten alle gleich in einem Browser machen.

Wenn der Browser £ nicht erkennt, wird es wahrscheinlich die Entity-Versionen nicht erkennen. Es ist in der ISO 8859-1 (Latin-1), so dass ich wäre überrascht, wenn ein Mozilla-Browser nicht darstellen kann (meine FF sicherlich kann).

Wenn Sie ein $ -Zeichen zu sehen, ist es wahrscheinlich, haben Sie zwei Dinge: 1. Die Browser Standardsprache ist en-us 2. Asp.net tut automatische locale-Umschaltung. Die Standard-web.config Einstellung ist so etwas wie

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

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

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

(oder auf Seitenebene:)

  <%@Page Culture="en-gb" UICulture="en-gb" ..etc... %>

Danach werden die String-Formate wie String.Format ( "{0: C}", GetPrice ()). Und GetPrice () ToString ( "C") wird die de-DE locale verwenden, wie asp.net haben eingestellt wird die Current für Sie

(obwohl Sie die de-de Kultur in den Überlastungen angeben können, wenn Sie paranoid sind).

Andere Tipps

Versuchen Sie dies, wird es Ihr locale-Set für die Anwendung verwendet werden:

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

Mit

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

Sie können eine Funktion schreiben, die die Umwandlung von Preis zu Zeichenfolge durchführen würden. Auf diese Weise haben Sie eine viel Kontrolle über den Ausgang.

Das Problem mit locale ist, dass es Web-Server abhängig und nicht Web-Browser abhängig ist.

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

benutzen Sie einfach den ToString ( „C2“) Eigenschaft eines Dezimalwert. Legen Sie Ihre Globalisierung in der web.config -. Halten Sie es einfach

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top