net - razor insert c# code
ASP.NET MVC Razor render sin codificación (7)
Razor codifica la cadena de forma predeterminada. ¿Hay alguna sintaxis especial para renderizar sin codificación?
Además del enfoque @ Html.Raw (cadena) ya mencionado, si genera una 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 sepa que puede contener html.
Por ejemplo, si su modelo de vista era:
public class SampleViewModel
{
public string SampleString { get; set; }
public MvcHtmlString SampleHtmlString { get; set; }
}
Para Core 1.0+ (y MVC 5+) use HtmlString
<!-- 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>
entonces
@Html.Raw(Html.Encode(myString).Replace("/n", "<br/>"))
Desde ASP.NET MVC 3, puedes usar:
@Html.Raw(myString)
En el caso de ActionLink, generalmente utiliza HttpUtility.Encode en el texto del enlace. En ese caso, puedes usar HttpUtility.HtmlDecode(myString)
funcionó cuando usé HtmlActionLink para decodificar la cadena que quería pasar. p.ej:
@Html.Raw(yourString)
HTML RAW:
@Html.Raw(yourString)
También puedes usar el método WriteLiteral
Use @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 ... Evite permitir que pasen todos los textos. Por ejemplo, solo preservar / convertir secuencias de caracteres específicas y siempre codificar el resto:
@Html.ActionLink(HttpUtility.HtmlDecode("myString","ActionName",..)
Entonces tiene la tranquilidad de que no ha creado un posible agujero de seguridad y que todos los caracteres especiales / extranjeros se muestran correctamente en todos los navegadores.
@(new HtmlString(myString))