Tengo un control de área de texto que acepta entradas. Estoy tratando de representar ese texto en una vista simplemente usando:
@ Model.CommentText
Esto está codificando correctamente cualquier valor. Sin embargo, quiero reemplazar los caracteres de salto de línea con <br />
y no puedo encontrar una manera de asegurarme de que las nuevas etiquetas br no se codifiquen. He intentado usar HtmlString pero aún no he tenido suerte.
asp.net-mvc
asp.net-mvc-3
razor
bkaid
fuente
fuente
\n
en la base de datos y desea convertir a un<br />
?Respuestas:
¡Use la propiedad de espacio en blanco CSS en lugar de abrirse a vulnerabilidades XSS!
fuente
pre-line
(solo conocíanowrap
ypre
).white-space: pre-wrap;
es mejor ya quepre-line
jugará con su texto al agrupar espacios en blanco en un espacio.Intenta lo siguiente:
Actualizar:
Según el
marcind's
comentario sobre esta pregunta relacionada , el equipo ASP.NET MVC está buscando implementar algo similar al<%:
y<%=
para el motor de vista Razor.Actualización 2:
Podemos convertir cualquier pregunta sobre la codificación HTML en una discusión sobre las entradas dañinas del usuario, pero ya existe suficiente.
De todos modos, tenga cuidado con los posibles aportes dañinos del usuario.
Actualización 3 (Asp.Net MVC 3):
fuente
<script>
?\n
lugar de\r\n
Divida en nuevas líneas (independiente del entorno) e imprima regularmente, sin necesidad de preocuparse por la codificación o xss:
(eliminar entradas vacías es opcional)
fuente
La tercera solución de Omar como HTML Helper sería:
fuente
Aplicando el principio DRY a la solución de Omar, aquí hay una extensión HTML Helper:
Uso (con expresiones regulares mejoradas):
Esto también tiene el beneficio adicional de poner menos responsabilidad en el desarrollador de Razor View para garantizar la seguridad de las vulnerabilidades XSS.
Mi preocupación con la solución de Jacob es que renderizar los saltos de línea con CSS rompe la semántica HTML .
fuente
Necesitaba dividir algo de texto en párrafos (etiquetas "p"), así que creé un simple ayudante usando algunas de las recomendaciones en respuestas anteriores (gracias chicos).
Uso:
fuente
Prefiero este método, ya que no requiere marcado de emisión manual. Lo uso porque renderizo las páginas de Razor en cadenas y las envío por correo electrónico, que es un entorno en el que el estilo de espacios en blanco no siempre funcionará.
fuente