2011-12-22 47 views
6

Consideremos el siguiente ejemplo:¿Salida de texto de MVC ViewBag con algunas áreas no codificadas?

<div>@ViewBag.MyData</div> 

Qué hacer si ViewBag.MyData contiene una cadena con "\ n" (saltos de línea) en el mismo, que yo quiero que se ponga "<br/>"? Cuando incluyo "<br/>" en lugar de las nuevas líneas, se codifica en el navegador, lo cual es malo.

¿Cómo puedo ayudar esto?

+1

Realizar la sustitución dentro de la plantilla de afeitar. '@ ViewBag.MyData.Replace (" \ n ","
")'? –

Respuesta

13

uso @Html.Raw(ViewBag.MyData.Replace("\n", "</br>"))

+1

No es tan inteligente mencionar cosas como "arriba". Ahora su respuesta es la mejor respuesta. –

+0

¿no es mejor usar htmlencode/decode de httutility? –

+1

Pero recuerde que ahora este texto no está codificado, por lo que si ViewBag.MyData tiene texto generado por el usuario, podría contener inyecciones ... Quizás sería mejor separar cadenas y escribir cadenas codificadas sin partes codificadas "
". – Vita1ij

5

la siguiente hará lo que usted necesita ...

@MvcHtmlString.Create(ViewBag.MyData.Replace("\n", "</br>")) 

El método Create tomará una cadena HTML y hacerlo como se esperaría si usted acaba de escribir el código HTML directamente en la página

2

Eso es lo que se utiliza para html pre tag

La etiqueta 0> < pre> define texto preformateado. Texto en un> elemento < previa se muestra en una fuente de ancho fijo (generalmente Courier), y conserva los dos espacios y saltos de línea ...

Y en la plantilla de afeitar

< pre>@ViewBag.MyData</ pre> 
Cuestiones relacionadas