Tengo una aplicación MVC3 que tiene una página de detalles. Como parte de eso, tengo una descripción (recuperada de una base de datos) que tiene espacios y nuevas líneas. Cuando se representa, el html ignora las nuevas líneas y espacios. Me gustaría codificar esos espacios y nuevas líneas para que no se ignoren.
¿Cómo haces eso?
Intenté HTML.Encode pero terminó mostrando la codificación (y ni siquiera en los espacios y nuevas líneas sino en algunos otros caracteres especiales)
html
css
newline
whitespace
line-breaks
Dan dot net
fuente
fuente
Respuestas:
Simplemente dale estilo al contenido
white-space: pre-wrap;
.fuente
white-space: pre-line;
si no desea que se sangra la primera línea de cada párrafo.¿Has intentado usar la
<pre>
etiqueta?http://jsfiddle.net/NweRa/
fuente
Puede usar espacios en blanco: prelínea para preservar los saltos de línea en el formato. No es necesario insertar manualmente elementos html.
o agregar a su elemento html
style="white-space: pre-line;"
fuente
Desea reemplazar todos los espacios con
&nbsp;
(espacio sin interrupción) y todas las líneas nuevas\n
con<<b></b>br>
(salto de línea en html). Esto debería lograr el resultado que estás buscando.Algo de esa naturaleza.
fuente
Estaba probando la
white-space: pre-wrap;
técnica establecida por Pete, pero si la cuerda era continua y larga, simplemente se salía del contenedor y no se deformaba por cualquier razón, no tenía mucho tiempo para investigar ... pero si usted también está teniendo el mismo problema, terminé usando las<pre>
etiquetas y el siguiente CSS y todo fue bueno para ir ...fuente
Como mencionó en la respuesta de @Developer, probablemente codifique HTML en la entrada del usuario. Si está preocupado por XSS, probablemente nunca necesite la entrada del usuario en su forma original, por lo que también podría escapar de él (y reemplazar espacios y líneas nuevas mientras lo hace).
Tenga en cuenta que escapar en la entrada significa que debe usar @ Html.Raw o crear una MvcHtmlString para representar esa entrada en particular.
También puedes probar
pero creo que tampoco escapará a los espacios. Entonces, en ese caso, sugiero simplemente hacer un .NET
en la entrada del usuario. Y si desea profundizar en la usabilidad, tal vez pueda hacer un análisis XML de la entrada del usuario (o jugar con expresiones regulares) para permitir solo un conjunto predefinido de etiquetas. Por ejemplo, permitir
... pero no permitas
fuente
Envuelva la descripción en un
textarea
elemento.fuente
Hay una manera simple de hacerlo. Lo probé en mi aplicación y funcionó bastante bien.
Simplemente escriba: $ text = $ row ["text"]; echo nl2br ($ texto);
fuente