Esto no es del todo correcto. Sí, puede insertar una cadena sin formato, pero si tiene "'<>etc...estos se escaparán. La forma correcta es usar MvcHtmlString que permitirá caracteres "ilegales". Por ejemplo, si está codificando datos Json ... sin codificar un modelo completo
Daniel B. Chapman
44
Daniel, Html.Raw () "devuelve un marcado que no está codificado en HTML".
Lucas
1
Html.Raw () codifica las citas ..."myAttr='hello';myInt=10"
Serge
44
NO codifica comillas. Además de la documentación obvia que lo indica como el día ( "Este método envuelve el marcado HTML usando la clase IHtmlString, que representa HTML no codificado " ). También probé esto y las citas no están codificadas.
Además del enfoque @ Html.Raw (string) ya mencionado, si genera un MvcHtmlString no se codificará. Esto puede ser útil al agregar sus propias extensiones a HtmlHelper, o al devolver un valor de su modelo de vista que sabe que puede contener html.
<!--this will be encoded --><div>@Model.SampleString</div><!--this will not be encoded --><div>@Html.Raw(Model.SampleString)</div><!--this will not be encoded either --><div>@Model.SampleHtmlString</div>
Úselo @Html.Raw()con precaución ya que puede causar más problemas con la codificación y la seguridad. Entiendo el caso de uso ya que tuve que hacerlo yo mismo, pero con cuidado ... Solo evite dejar pasar todo el texto. Por ejemplo, solo preserva / convierte secuencias de caracteres específicas y siempre codifica el resto:
Entonces tiene la tranquilidad de que no ha creado un agujero de seguridad potencial y que los caracteres especiales / extranjeros se muestran correctamente en todos los navegadores.
+1 ¡Exactamente lo que necesitaba! La cadena aún necesita ser codificada, pero los retornos de línea deben ser html. ¡Gracias!
Peter
@Html.Raw(Html.Encode(myString).Replace(Html.Encode("\n"), "<br/>"))para ASP.NET Core
kenjiuno
5
En el caso de ActionLink, generalmente usa HttpUtility.Encode en el texto del enlace. En ese caso, puede usarlo
HttpUtility.HtmlDecode(myString)
, funcionó para mí cuando use HtmlActionLink para decodificar la cadena que quería pasar. p.ej:
"'<>etc...
estos se escaparán. La forma correcta es usar MvcHtmlString que permitirá caracteres "ilegales". Por ejemplo, si está codificando datos Json ... sin codificar un modelo completo"myAttr='hello';myInt=10"
fuente
Además del enfoque @ Html.Raw (string) ya mencionado, si genera un MvcHtmlString no se codificará. Esto puede ser útil al agregar sus propias extensiones a HtmlHelper, o al devolver un valor de su modelo de vista que sabe que puede contener html.
Por ejemplo, si su modelo de vista era:
Para Core 1.0+ (y MVC 5+) use HtmlString
luego
fuente
Úselo
@Html.Raw()
con precaución ya que puede causar más problemas con la codificación y la seguridad. Entiendo el caso de uso ya que tuve que hacerlo yo mismo, pero con cuidado ... Solo evite dejar pasar todo el texto. Por ejemplo, solo preserva / convierte secuencias de caracteres específicas y siempre codifica el resto:Entonces tiene la tranquilidad de que no ha creado un agujero de seguridad potencial y que los caracteres especiales / extranjeros se muestran correctamente en todos los navegadores.
fuente
@Html.Raw(Html.Encode(myString).Replace(Html.Encode("\n"), "<br/>"))
para ASP.NET CoreEn el caso de ActionLink, generalmente usa HttpUtility.Encode en el texto del enlace. En ese caso, puede usarlo
HttpUtility.HtmlDecode(myString)
, funcionó para mí cuando use HtmlActionLink para decodificar la cadena que quería pasar. p.ej:fuente
También puedes usar el método WriteLiteral
fuente
HTML RAW:
fuente