none
Como colocar separador de miles c# RRS feed

  • Pregunta

  • como puedo lograr que se me visualice el separador de miles, le hago mantenimiento a una aplicación que trabaja con el patron MVC en ASP.NET, la aplicación busca un producto en tiempo real el cual viene con el siguiente formato 100000,00 y cuando quiero guardarlo necesito que se vea de la siguiente manera:

    OBJETIVO = 100.000,00

    Hay alguna manera de lograrlo?

    En el Modelo tiene una clase que se llama Item

    public class Item
        {
            public Item()
            {
                precio = 0;
        
            }
    
            public decimal precio;
        }

    En el Controlador tiene una clase que se llama Ordenes

    List<Item> items = JsonConvert.DeserializeObject<List<Item>>(collection["listaProductos"].Trim());
                    foreach (Item i in items)
                    {
                        int indexPrecio = i.nombre.IndexOf(" Precio: ");
                        if (indexPrecio != -1)
                        {
                            i.precio = Convert.ToDecimal(i.nombre.Split(new string[] {"Precio:" }, StringSplitOptions.None)[1].Trim(), CultureInfo.InvariantCulture);
                            i.nombre = i.nombre.Substring(0, indexPrecio);                        
                        }
                    }

    En esta Linea he intentado colocar String.Format o IFormatProvider Interface que aparte de darme unos errores no me soluciona

    i.precio = Convert.ToDecimal(i.nombre.Split(new string[] {"Precio:" }, StringSplitOptions.None)[1].Trim(), CultureInfo.InvariantCulture);

    Agradeciera muchos si me ayudaran o me guiaran para solventar este error




    martes, 8 de diciembre de 2020 17:10

Respuestas

  • acabo de notar que en la base de datos donde se guardara el campo es numeric. creo que alli esta el problema intentare modificarla a decimal para ver
    No, no tiene nada que ver. Los dos tipos te van a almacenar el valor exactamente igual. Es incluso aunque no lo hiciesen, seguiría sin tener nada que ver con tu problema. Ninguno de los tipos de datos numéricos almacena el formato. Tienes que aplicarle el formato después de haberlo leído desde la base de datos, y el resultado de aplicar el formato necesariamente lo tienes que almacenar en un String. Si lo intentas almacenar de nuevo en un dato numérico, se pierde de nuevo el formato.
    • Marcado como respuesta EricRRModerator sábado, 12 de diciembre de 2020 1:22
    martes, 8 de diciembre de 2020 22:09

Todas las respuestas

  • Si quieres darle formato desde el Controlador, es necesario que el campo que le pasas a la vista sea de tipo String. De lo contrario, no incorpora ningún formato, y se presenta en el formato que la vista le aplique por defecto.

    Asegúrate primero de que has separado el modelo de datos del modelo de la vista, es decir, que no estés usando una misma clase para los dos modelos.

    En el modelo de datos, el campo es de tipo decimal.

    En el modelo de la vista, el campo es de tipo string.

    Cuando el controlador copia el modelo de datos al modelo de la vista, aplica formato al copiar ese campo:

    vistamodelo.Precio = modelodatos.Precio.ToString("0,000.00");

    Otra alternativa es dejar el precio con tipo numérico y aplicarle el formato en el lado de la Vista. Si la vista está hecha con Razor, busca el sitio donde tengas puesto algo así como @model.Precio, y cámbialo por @model.Precio.ToString("0,000.00"). Haciéndolo así, no se necesita cambiar nada en el modelo.

    • Propuesto como respuesta EricRRModerator jueves, 10 de diciembre de 2020 18:53
    martes, 8 de diciembre de 2020 17:56
  • Hola Harrison,

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las respuestas proporcionadas?

    Espero su respuesta.

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    martes, 8 de diciembre de 2020 18:11
    Moderador
  • acabo de notar que en la base de datos donde se guardara el campo es numeric. creo que alli esta el problema intentare modificarla a decimal para ver
    • Editado Harrison BB martes, 8 de diciembre de 2020 19:02
    martes, 8 de diciembre de 2020 19:02
  • acabo de notar que en la base de datos donde se guardara el campo es numeric. creo que alli esta el problema intentare modificarla a decimal para ver
    No, no tiene nada que ver. Los dos tipos te van a almacenar el valor exactamente igual. Es incluso aunque no lo hiciesen, seguiría sin tener nada que ver con tu problema. Ninguno de los tipos de datos numéricos almacena el formato. Tienes que aplicarle el formato después de haberlo leído desde la base de datos, y el resultado de aplicar el formato necesariamente lo tienes que almacenar en un String. Si lo intentas almacenar de nuevo en un dato numérico, se pierde de nuevo el formato.
    • Marcado como respuesta EricRRModerator sábado, 12 de diciembre de 2020 1:22
    martes, 8 de diciembre de 2020 22:09