Guardo HTML codificado en la base de datos.
La única forma en que podría mostrarlo correctamente es:
<div class='content'>
@MvcHtmlString.Create(HttpUtility.HtmlDecode(Model.Content));
</div>
Es feo. ¿Hay alguna forma mejor de hacer esto?
Utilizar
Html.Raw()
. Phil Haack publicó una buena guía de sintaxis en http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx .<div class='content'> @Html.Raw( Model.Content ) </div>
fuente
esto es bastante simple:
Otra solución, también puede devolver un HTMLString, Razor generará el formato correcto:
en la vista misma:
en controlador:
public static HtmlString GetSomeHtml() { var Data = "abc<br/>123"; return new HtmlString(Data); }
fuente
También puedes simplemente usar la
HtmlString
clase@(new HtmlString(Model.Content))
fuente
En mi humilde opinión, no debe almacenar sus datos codificados en html en la base de datos. Simplemente almacene en texto plano (no codificado) y muestre sus datos de esta manera y su html se codificará automáticamente:
<div class='content'> @Model.Content </div>
fuente
Acabo de recibir otro caso para mostrar la barra invertida
\
con Razor y Java Script.Mi
@Model.AreaName
aspecto es Nombre1 \ Nombre2 \ Nombre3, así que cuando lo muestro , todas las barras invertidas desaparecen y veo Name1Name2Name3Encontré una solución para solucionarlo:
var areafullName = JSON.parse("@Html.Raw(HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(Model.AreaName)))");
No olvide agregar
@using Newtonsoft.Json
en la parte superior de lachtml
página.fuente