none
Salto de linea en archivo de recursos

    Question

  • Tengo un proyecto en asp.net mvc 3 en c#. Tengo un archivo de recursos con los textos de mensajes de error, confirmacion, etc. Los mensajes los muestro con $.prompt de jquery. Mi problema es que si el texto es demasiado largo tienen que haber saltos de linea y no se como ponerlos. Ya intente con \n, y no puedo poner html en el archivo de recursos porque me lo toma como string. Intente ponerle html en el archivo de recursos y leerlo con html.raw pero no me funciono.

    Si conocen alguna manera se los agradeceria.

    Monday, November 05, 2012 4:08 PM

All replies

  • ¿Cómo está pasándole la cadena de texto a jQuery?  Muéstrenos el código para entender un poco mejor su dilema.  En teoría \n debería trabajar bien.  Siendo jQuery JavaScript, y sabiendo que el siguiente JavaScript funcona:

    alert('¡Hola!\nMundo');

    Yo diría que \n debería funcionar correctamente.


    Jose R. MCP
    Code Samples

    Monday, November 05, 2012 4:22 PM
  • La forma en que lo paso es a traves de un archivo de recursos. Por ejemplo:

    $.prompt('archivoDeRecursos.Mensaje');

    Por eso no puedo poner "\n", y si pongo html en el archivo de recursos me lo toma como string. Por eso intente poner html en el archivo de recursos para ponerle ahi saltos de linea y despues usar:

    $.prompt(Html.Raw('archivoDeRecursos.Mensaje'))

    Pero tampoco funciono.

    Monday, November 05, 2012 6:24 PM
  • Pero $.prompt('archivoDeRecursos.Mensaje') mostrará el texto archivoDeRecursos.Mensaje, no el mensaje identificado por esa cadena de texto.  Esa no puede ser su línea de código.

    Y por cierto, ¿qué extensión de jQuery provee prompt()?  Quise probarlo y no lo encuentro en jQuery.


    Jose R. MCP
    Code Samples

    Monday, November 05, 2012 6:34 PM
  • Utilice Impromptu (jquery-impromptu.4.0.js). Perdon en la instruccion anterior me olvide de poner el @. Quedaria asi:

    $.prompt('@archivoDeRecursos.Mensaje');

    Monday, November 05, 2012 7:27 PM
  • Ah ok.  Supongo que lo que tendrá que hacer es separar el mensaje en párrafos y luego concatenar codificado para HTML.

    @{
        string texto = String.Empty;
        foreach (string t in archivoDeRecursos.Mensaje.Split('\n'))
        {
            texto += texto.Length == 0 ? String.Empty : "\n";
            texto += HttpUtility.Encode(t);
        }
    }
    ...
    $.prompt(@Html.Raw(texto));

    Eso básicamente descompone archivoDeRecursos.Mensaje en sus respectivos párrafos, los codifica para HTML y luego los une nuevamente para evitar que el carácter de nueva línea se codifique y pierda su efecto.  Finalmente el resultado final se muestra como Raw para asegurar que no hay recodificación a HTML.  Esto debería funcionar si Impromptu soporta el carácter de nueva línea.  Si no lo soportara tal vez el asunto sería más sencillo:  Reemplazar todo \n por <br />.


    Jose R. MCP
    Code Samples

    Monday, November 05, 2012 7:47 PM
  • Gracias lo voy a probar.
    Monday, November 05, 2012 7:55 PM