ASP.NET MVC Razor render sin codificación
Razor codifica cadena por defecto. ¿Hay alguna sintaxis especial para renderizar sin codificación?
7 answers
Desde ASP.NET MVC 3, puede utilizar:
@Html.Raw(myString)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-26 15:32:34
@(new HtmlString(myString))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-01 17:53:37
Así como el ya mencionado @Html.Enfoque Raw (string), si genera un MvcHtmlString no se codificará. Esto puede ser útil cuando agregue sus propias extensiones al HtmlHelper, o cuando devuelva un valor de su modelo de vista que sabe 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; }
}
Entonces
<!-- 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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-29 08:05:06
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... Simplemente evite permitir que todo el texto pase. Por ejemplo, solo conserva / convierte secuencias de caracteres específicas y siempre codifica el resto:
@Html.Raw(Html.Encode(myString).Replace("\n", "<br/>"))
Entonces usted tiene la tranquilidad de que no ha creado un agujero de seguridad potencial y los caracteres especiales/extranjeros se muestran correctamente en todos los navegadores.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-06 21:43:45
En el caso de ActionLink, generalmente utiliza HttpUtility.Codifique en el texto del enlace.
En ese caso
puede utilizar
HttpUtility.HtmlDecode(myString)
me funcionó cuando usé HtmlActionLink para decodificar la cadena que quería pasar. eg:
@Html.ActionLink(HttpUtility.HtmlDecode("myString","ActionName",..)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-09 06:14:44
También puede usar el método WriteLiteral
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-21 14:16:18
HTML RAW:
@Html.Raw(yourString)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-07 15:09:55