Tengo seguro/sanitized HTML guardado en una base de datos de la tabla.

¿Cómo puedo tener este contenido HTML escrito en una hoja de Afeitar a la vista?

Escapa siempre a personajes como < y signos para &amp;.

  • Para salvar a la gente de la larga historia de la discusión abajo – @Html.Raw()
  • Para salvar a la gente como yo tratando de hacer esto con los tipos anónimos en dinámicamente tipado de las vistas, donde esto no va a funcionar – consulte esta respuesta para mi más específica de que se trate. Aunque el uso de este enfoque con establecimiento inflexible de tipos de vista es aún mejor si su situación lo permite.
InformationsquelleAutor AGS | 2010-11-25

6 Comentarios

  1. 638

    Suponiendo que su contenido está dentro de una cadena denominada mystring

    Puede utilizar:

    @Html.Raw(mystring)

    Alternativamente, usted puede convertir su cadena de HtmlString o de cualquier otro tipo que implementa IHtmlString en el modelo o directamente en línea y el uso regular de @:

    @{ var myHtmlString = new HtmlString(mystring);}
    @myHtmlString
    • Gracias por esta respuesta. Me ayudó un poco de tarea para la que yo estaba aprendiendo. 🙂 Sin embargo, yo estoy usando la última versión de MVC3 y hasta ahora no Html.Raw 🙁
    • Hola Sergio. Estoy usando MVC 3 y estoy usando el método Raw correctamente.
    • Gracias por la respuesta! Todavía estoy aprendiendo MVC 3 y este estaba eludiendo mí.
    • Estoy usando la última MVC 3 con razor sintaxis y Html.Raw es definitivamente disponible para mí.
    • No hay nada como @Html.RawFor(m => m.HtmlField)?
    • Lorenzo, he actualizado respuesta a quitar la mención de MVC Beta como lo era hace algunos años. Siéntase libre de revertir o cambiar.
    • Decir que fue definir una variable global en la navaja de afeitar, y, a continuación, utilice @html.Raw( en esta variable porque quiero definir algunos marcado y dejar a la vista. Es allí una manera de que alguien puede establecer un valor de una hoja de Afeitar variable a partir de la url? Sólo quiero para asegurarse de que esto no es vulnerable a XSS a través de la URL de la inyección.. Gracias!

  2. 75

    En ASP.NET MVC 3 Usted debe hacer algo como esto:

    //Say you have a bit of HTML like this in your controller:
    ViewBag.Stuff = "<li>Menu</li>"
    // Then you can do this in your view:
    @MvcHtmlString.Create(ViewBag.Stuff)
    • Yo prefiero este método debido a HTML.Raw golpes, si es que la cadena que se pasa es nulo.
    • Gracias, esto es muy limpio!
  3. 59

    Puede utilizar

    @{ WriteLiteral("html string"); }
    • +1 para WriteLiteral, no sabía que uno
    • Este fue impresionante para mí, fue el uso de Afeitar dentro de un Hangfire aplicación para enviar mensajes de correo electrónico… Html.Raw() no funciona no
    • 1 para WriteLiteral
  4. 11

    A veces puede ser difícil de usar html en bruto. En su mayoría debido a la vulnerabilidad de XSS. Si que es un problema, pero usted todavía desea utilizar html en bruto, puede codificar el miedo partes.

    @Html.Raw("(<b>" + Html.Encode("<script>console.log('insert')</script>" + "Hello") + "</b>)")

    Resultados en

    (<b>&lt;script&gt;console.log('insert')&lt;/script&gt;Hello</b>)
  5. 4

    Usted puede poner su cadena en viewdata en el controlador como este :

     ViewData["string"] = DBstring;

    Y, a continuación, llamar a que viewdata en vista de como esta :

    @Html.Raw(ViewData["string"].ToString())

Dejar respuesta

Please enter your comment!
Please enter your name here