【发布时间】:2011-06-29 02:14:14
【问题描述】:
我将编码的 HTML 存储在数据库中。
我可以正确显示它的唯一方法是:
<div class='content'>
@MvcHtmlString.Create(HttpUtility.HtmlDecode(Model.Content));
</div>
太丑了。 有没有更好的方法来做到这一点?
【问题讨论】:
标签: asp.net-mvc-3 razor html-encode
我将编码的 HTML 存储在数据库中。
我可以正确显示它的唯一方法是:
<div class='content'>
@MvcHtmlString.Create(HttpUtility.HtmlDecode(Model.Content));
</div>
太丑了。 有没有更好的方法来做到这一点?
【问题讨论】:
标签: asp.net-mvc-3 razor html-encode
我刚刚得到另一个案例,用 Razor 和 Java Script 显示反斜杠 \。
我的@Model.AreaName 看起来像 Name1\Name2\Name3 所以当我显示它时,所有反斜杠都消失了,我看到了 Name1Name2Name3
我找到了解决办法:
var areafullName = JSON.parse("@Html.Raw(HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(Model.AreaName)))");
不要忘记在chtml 页面顶部添加@using Newtonsoft.Json。
【讨论】:
试试这个:
<div class='content'>
@Html.Raw(HttpUtility.HtmlDecode(Model.Content))
</div>
【讨论】:
我将编码的 HTML 存储在数据库中。
恕我直言,您不应该将 html 编码的数据存储在数据库中。只需以纯文本(未编码)存储并像这样显示您的数据,您的 html 将被自动编码:
<div class='content'>
@Model.Content
</div>
【讨论】:
您也可以简单地使用HtmlString 类
@(new HtmlString(Model.Content))
【讨论】:
这很简单:
HttpUtility.HtmlDecode(Model.Content)
另一种解决方案,你也可以返回一个 HTMLString,Razor 会输出正确的格式:
在视图本身中:
@Html.GetSomeHtml()
在控制器中:
public static HtmlString GetSomeHtml()
{
var Data = "abc<br/>123";
return new HtmlString(Data);
}
【讨论】:
使用Html.Raw()。 Phil Haack 在http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx 上发布了一个不错的语法指南。
<div class='content'>
@Html.Raw( Model.Content )
</div>
【讨论】: