2011-09-02 18 views
24

OK, bastante nuevo para ASP.Net MVC, así que lamento si esta es una pregunta tonta, pero ¿cómo hago para mostrar los valores de un ViewBag como HTML? Por ejemplo, si ViewBag.SomeMessage contiene el texto siguiente:¿Cómo puedo mostrar una viewbag como html?

<h3>Test</h3><p>Test</p><p>Test</p><p>Test</p><p>Test</p><p>TEST</p>

¿Cómo hago para tener realmente la página render que como HTML normal? ¿O hay una manera mucho más fácil de lograr esto que me estoy perdiendo por completo?

¡Salud!

Respuesta

47

Todos son correctos en el uso de @Html.Raw(), pero quiero señalar que tenga cuidado con esto, ya que puede hacer que su sitio sea susceptible a las vulnerabilidades de XSS.

Combinaría el @Html.Raw(ViewBag.SomeMessage) con el Microsoft's Anti-XSS Library para asegurarme de que no introduzca ninguna vulnerabilidad de esto.

Editar: La ventaja de la biblioteca Anti-XSS (si no lo ha mirado) es que tiene una lista blanca de marcas de revisión aprobados (como <b>, <h3>, etc ..), de modo que sólo aprobado las marcas serán descodificadas.

Edit2:Here's an example de cómo se hace esto.

+0

+1 Esto también es un buen consejo. – Tejs

+0

autopromoción desvergonzada sobre lo que es xss y usar anti-xss, más otras cosas de corrección de intrusos: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV333 –

12

lo haría con el Raw método:

@Html.Raw(ViewBag.SomeMessage) 
+0

¡Maldita sea! jajaja – slandau

+2

devolviendo el favor :) jaja – slandau

7

Creo que se puede hacer algo como esto:

@Html.Raw(ViewBag.SomeMessage) 
+0

+1 - NEMESIS! = D Solo estoy dibujando McGraw hoy, supongo = D – Tejs

6
@Html.Raw(ViewBag.SomeHtmlProperty) 

Dicho esto, aquí está mi renuncia: NO USE ViewBag . Use vistas fuertemente tipadas y vea modelos. ViewBag/ViewData es como cáncer para una aplicación ASP.NET MVC.

1

colocan datos en ViewBag como una cadena codificada en HTML que no se debe codificar de nuevo.

ViewBag.myBag = MvcHtmlString.Create(myCode ?? string.Empty); 

a continuación, utilizar

@ViewBag.myBag 

El documentation para MvcHtmlString.

Cuestiones relacionadas