none
CONCATENAR STRING CON DECIMAL RRS feed

  • Pregunta

  • Amigos, tengo este problema

    Cuando hago esto @Html.DisplayName("Suma = " + 100), sale Suma = 100 ES CORRECTO

    pero cuando hago @Html.DisplayName("Suma = " + 100.56) sale sólo 56, no sale ni la palabra Suma ni el valor entero 100, sólo imprime los decimales.

    ¿Que puede estar sucediendo?

    martes, 13 de agosto de 2013 21:13

Todas las respuestas

  • y si haces

    @Html.DisplayName(string.Format("Suma = {0:N2}", (decimal)100.56));

    Nota: recuerda mencionar en que lenguaje programas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 13 de agosto de 2013 21:27
  • Leandro, el resultado de eso me sale: 56;. Como te das cuenta me vota solo los decimales. Programo en C# y uso razor en mis vistas

    Espero me puedas ayudar, no se que puede estar mal, crees que sea el helper @Html.DisplayName??
    • Editado devinnova martes, 13 de agosto de 2013 22:06
    martes, 13 de agosto de 2013 22:04
  • Hola,

    No se cuanto tiempo hace, pero hay cosas que me animan. Seguro que si te lees esto http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx solucionas tu problema.

    Como hecho de menos los foros:)


    phurtado
    Mi Blog Blog
    Sigueme en Twitter

    martes, 13 de agosto de 2013 23:08
  • Genial Pedro, siempre es bueno documentarse. Pero aún mantengo el problema, puedes explicarme porque este comportamiento?

    @Html.DisplayName("ASP.NET") y al imprimir solo me sale NET y obvia "ASP."

    Es lo mismo que me pasa con los numeros decimales... siempre imprime el contenido luego del punto, inclusive en texto como te estoy demostrando.

    @Html.DisplayName presenta estos problemas? o soy yo quien le está dando un mal uso.



    • Editado devinnova martes, 13 de agosto de 2013 23:32
    martes, 13 de agosto de 2013 23:30
  • Pero porque sigues empeñado en utilizar DisplayName. Mira lo que te pase antes o bien utiliza http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx que piensas que con DisplayName lo vas a a solucionar todo:)

    Pues no.


    phurtado
    Mi Blog Blog
    Sigueme en Twitter

    martes, 13 de agosto de 2013 23:46
  • Al insistir en el uso de DisplayName me di cuenta del problema del punto y desistí su uso. De hecho, me sirvió también el material que me adjuntaste. No es un comportamiento correcto el que sucede con DisplayName cuando le pones un punto (.) y pedí apoyo por si alguien podría AYUDARNOS A TODOS  a entender que está sucediendo. Esto nos pasa a las personas que urgamos mas halla de lo simple y que no nos conformamos por alguna salidilla simple, sino que insistimos en el porque. Gracias Pedro, pero no te da curiosidad averiguar que sucede? los de sistemas tenemos ese curiosidad innata.
    • Editado devinnova martes, 13 de agosto de 2013 23:53
    martes, 13 de agosto de 2013 23:51
  • Para quien le interese el problema que menciono, recibí la respuesta de un experto

    Lo que sucede es que este Helper no va a mostrar como tal un string que le pases, ese string que se envía es el nombre que identifica al objeto que tiene el DisplayName, si ves los fuentes de System.Web.Mvc.Html la Clase DisplayNameExtensions expone esos métodos de extensión, donde si no se encuentra el model meatadata, lo asigna a null y y hace un Split por el comodín "."

    Nicolás Herrera 
    Bogotá - Colombia 

    ¿Qué diferente verdad?

    • Propuesto como respuesta Pedro Hurtado miércoles, 14 de agosto de 2013 15:26
    miércoles, 14 de agosto de 2013 1:13
  • Hola,

    Tal y como ha comentado Nico. Lo que hace DisplayName es  ejecutar el siguiente código para tu cadena "ASP.NET".

    @{           
        var metadata = ModelMetadata.FromStringExpression("ASP.NET", Html.ViewContext.ViewData);
        var stringName = metadata.DisplayName ?? metadata.PropertyName ?? "APS.NET".Split('.').Last();
        @:stringName
    }

    Y como veo que te gusta investigar lo tienes fácil, mira el código fuente de la clase DisplayNameExtension en esta url http://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/Html/DisplayNameExtensions.cs.

    Ahora no te quedes en eso:)  puedes mirar todo el código fuente de MVC en http://aspnetwebstack.codeplex.com/.

    Y por ultimo prueba estas lineas de código

    @Html.DisplayName("ASP.NET")  
    <br />          
    @{           
           @:"ASP.NET"
           <br />
           <text>"Otra alternativa para pintar ASP.NET"</text>
           <br />
    }

    Después de esta explicación y la de Nico, creo que nunca se te va a olvidar:)

    Ojo.Cuidado con hacer esto @Html.DisplayName(null) que se rompe. Lo mismo se le olvido a alguien como siempre preguntar por (null!=parametro). Que vamos a hacer hasta los grandes se equivocan:)

    Saludos,


    phurtado
    Mi Blog Blog
    Sigueme en Twitter

    miércoles, 14 de agosto de 2013 15:22
  • y si usas

    @:string.Format("Suma = {0:N2}", (decimal)100.56)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 14 de agosto de 2013 17:11