La mejor manera de convertir un valor decimal a una moneda de cadena para la presentación en HTML

StackOverflow https://stackoverflow.com/questions/88522

Pregunta

Yo con ganas de demostrar los precios de mis productos en mi tienda online.Actualmente estoy haciendo:

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

Donde GetPrice() devuelve un número decimal.Así que esta actualmente devuelve un valor por ejemplo,"£12.00"

Creo que el HTML correcto para una salida de "£12.00" es "&pound;12.00", así que, aunque esto es representar bien en la mayoría de los navegadores, algunos navegadores (Mozilla) mostrar esta como $12.00.

(El servidor se encuentra en el reino unido, con la localización está configurado correctamente en la web.config).

Es la continuación de una mejora, o hay una mejor manera?

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

Solución

El £ símbolo (U+00A3), y las entidades html & #163;y & pound;todos debemos hacer que el mismo en un navegador.

Si el navegador no reconoce £, probablemente no reconocer la entidad versiones.Es en ISO 8859-1 (Latin-1), por lo que me sorprendería si un navegador de Mozilla no puede hacerla (mi FF, que sin duda puede).

Si usted ve un signo$, lo más probable es que usted tiene dos cosas:1.El navegador por defecto el idioma es en-us 2.Asp.net está haciendo automática de la configuración regional de conmutación.La web predeterminado.config configuración es algo como

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

Como (casi seguro) quiere que el reino unido sólo los precios, basta con especificar la configuración regional en la web.config:

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

(o en la página de nivel:)

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

A partir de entonces la cadena de formatos, tales como Cadena.Format("{0:C}",GetPrice()) y GetPrice().ToString("C") se utiliza la en-GB regional como asp.net se ha establecido la currentCulture para usted

(aunque se puede especificar la en-gb cultura en el sobrecargas si usted es paranoico).

Otros consejos

Prueba esto, que va a utilizar la configuración regional establecida para la aplicación:

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

Uso

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

Podría escribir una función que iba a realizar la conversión de precios a la cadena.De esta manera usted tiene un montón de control sobre la salida.

El problema con la configuración regional es que la web dependientes del servidor y no del navegador web dependiente.

Si usted necesita explícitamente al estado la localización puede utilizar la clase CultureInfo y que pase a la cadena de formateador.

sólo utilice el método ToString("C2") de propiedad de un valor decimal.Establecer su globalización en la web.config - mantenerlo simple.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top