Question

Je souhaite afficher les prix de mes produits dans ma boutique en ligne. Je suis en train de faire:

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

Où GetPrice () renvoie une décimale. Donc, cela retourne actuellement une valeur, par exemple. "& # 163; 12,00"

Je pense que le code HTML correct pour une sortie de " & # 163; 12.00 " est " & 12,00 ", donc bien que le rendu soit correct dans la plupart des navigateurs, certains navigateurs (Mozilla) indiquent ceci à 12,00 $.

(Le serveur est au Royaume-Uni, la localisation est définie correctement dans web.config).

Le modèle ci-dessous représente-t-il une amélioration ou existe-t-il un meilleur moyen?

<span class="ourprice">
     <%=GetPrice().ToString("C").Replace("£","&pound;")%>
</span>
Était-ce utile?

La solution

Le symbole £ (U + 00A3) et les entités html & amp; # 163; et & amp; livre; devrait tous rendre la même chose dans un navigateur.

Si le navigateur ne reconnaît pas £, il ne reconnaîtra probablement pas les versions de l'entité. C'est dans ISO 8859-1 (Latin-1), donc je serais surpris qu'un navigateur Mozilla ne puisse pas le restituer (mon FF peut certainement).

Si vous voyez un signe $, vous avez probablement deux choses: 1. La langue par défaut du navigateur est en-us 2. Asp.net effectue la commutation automatique des paramètres régionaux. Le paramètre web.config par défaut est quelque chose comme

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

Comme vous voulez (presque certainement) des prix pour le Royaume-Uni uniquement, spécifiez simplement les paramètres régionaux dans web.config:

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

(ou au niveau de la page:)

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

Ensuite, les formats de chaîne tels que String.Format ("{0: C}", GetPrice ()) et GetPrice (). ToString ("C") utilisera les paramètres régionaux en-GB comme asp.net. aura défini la currentCulture pour vous

(bien que vous puissiez spécifier la culture en-gb dans les surcharges si vous êtes paranoïaque).

Autres conseils

Essayez ceci, il utilisera les paramètres régionaux définis pour l'application:

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

Utiliser

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

Vous pourriez écrire une fonction qui effectuerait la conversion de price en chaîne. De cette façon, vous avez beaucoup de contrôle sur la sortie.

Le problème lié aux paramètres régionaux est qu’il dépend du serveur Web et non du navigateur Web.

Si vous devez indiquer explicitement la localisation, vous pouvez utiliser CultureInfo et le transmettre au formateur de chaîne.

utilisez simplement la propriété ToString ("C2") d’une valeur décimale. Définissez votre globalisation dans web.config - restez simple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top