none
Cambiar formato de números a monedas RRS feed

  • Pregunta

  • Buen día.

    Quisiera saber ¿Cómo puedo puedo hacer que en mi vista se presente un número con formato de miles, y además solo se presenten un máximo de 3 decimales?, ejemplo 

    23445.850000 =>23,445.800

    Tengo que mencionar que los datos los consulto desde base de datos, y los envio a la vista desde su respectivo controlador en un ViewModel, asi mas o menos 

    ViewModelEjemplo

    {

    public List<int> valores

    }

    y en mi controlador uso: return view(ViewModelEjemplo)

    Ya en mi vista barro con un foreach la Lista valores y los presento en una tabla.

    Obviamente mi modelo es mas complejo, pero es la lista que la recorro y la presento en mi vista.

    Gracias de antemano.

    jueves, 20 de junio de 2019 5:20

Respuestas

  • La instrucción para dar formato a un valor de tipo numérico sería esta:

    string valorFormateado = elValor.ToString("###,##0.000")

    Hay dos sitios donde lo puedes meter: En la vista o en el controlador. Si lo haces en la vista, lo añades en donde estés usando el @ para presentar el valor, por ejemplo, si es un bucle for que dentro escribe @item, pues lo cambias por @item.ToString("##,###,##0"). Si lo quieres hacer en el controlador, entonces tienes que cambiar el ViewModel para que use un List<string> en lugar del List<int>. Y cuando cargues cada valor dentro de la lista, metes el formato en el momento de añadirlo al List.

    • Marcado como respuesta Anthonyvtt jueves, 20 de junio de 2019 13:51
    jueves, 20 de junio de 2019 6:30

Todas las respuestas

  • La instrucción para dar formato a un valor de tipo numérico sería esta:

    string valorFormateado = elValor.ToString("###,##0.000")

    Hay dos sitios donde lo puedes meter: En la vista o en el controlador. Si lo haces en la vista, lo añades en donde estés usando el @ para presentar el valor, por ejemplo, si es un bucle for que dentro escribe @item, pues lo cambias por @item.ToString("##,###,##0"). Si lo quieres hacer en el controlador, entonces tienes que cambiar el ViewModel para que use un List<string> en lugar del List<int>. Y cuando cargues cada valor dentro de la lista, metes el formato en el momento de añadirlo al List.

    • Marcado como respuesta Anthonyvtt jueves, 20 de junio de 2019 13:51
    jueves, 20 de junio de 2019 6:30
  • hola, lo intente en la vista, pero me sale el mensaje "ninguna sobrecarga para el método tostring toma 1 argumento"
    jueves, 20 de junio de 2019 13:39
  • Eso indica que el objeto sobre el que lo aplicaste no es de tipo int, lo cual contradice tu indicacion de que estabas pasando en el modelo un List<int>. El int si que tiene esa sobrecarga:

    https://docs.microsoft.com/en-us/dotnet/api/system.int32.tostring?view=netframework-4.8

    Se necesita saber cual es el tipo de dato que quieres formatear para ver cual es el metodo concreto que tenemos que aplicarle.

    jueves, 20 de junio de 2019 13:49
  • gracias ya me salió, es que lo tenia en mi modelo como un decimal?, primero debía convertirlo, sin embargo necesitaba también agregarle un signo de $ y poner los valores negativos en () , asi que termine usando esto que encontre, por si a alguien mas le sirve tmb:

    en mi vista:

    @string.Format("{0:C}", Total)

    jueves, 20 de junio de 2019 13:51