我将编码的HTML存储在数据库中。
我能正确显示它的唯一方法是:
<div class='content'>
@MvcHtmlString.Create(HttpUtility.HtmlDecode(Model.Content));
</div>
这太丑了。 有没有更好的方法呢?
答案 0 :(得分:146)
试试这个:
<div class='content'>
@Html.Raw(HttpUtility.HtmlDecode(Model.Content))
</div>
答案 1 :(得分:46)
使用Html.Raw()
。 Phil Haack在http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx发布了一个很好的语法指南。
<div class='content'>
@Html.Raw( Model.Content )
</div>
答案 2 :(得分:8)
这非常简单:
HttpUtility.HtmlDecode(Model.Content)
另一个解决方案,你也可以返回一个HTMLString,Razor会输出正确的格式:
在视图中:
@Html.GetSomeHtml()
控制器中的:
public static HtmlString GetSomeHtml()
{
var Data = "abc<br/>123";
return new HtmlString(Data);
}
答案 3 :(得分:7)
您也可以简单地使用HtmlString
类
@(new HtmlString(Model.Content))
答案 4 :(得分:1)
我将编码的HTML存储在数据库中。
Imho你不应该将数据html编码存储在数据库中。只需以纯文本(未编码)存储,只显示您的数据,您的html将自动编码:
<div class='content'>
@Model.Content
</div>
答案 5 :(得分:0)
我刚好用Razor和Java脚本显示反斜杠\
。
我的@Model.AreaName
看起来像 Name1 \ Name2 \ Name3 ,所以当我显示它时,所有的反斜杠都消失了,我看到了 Name1Name2Name3
我找到了解决问题的方法:
var areafullName = JSON.parse("@Html.Raw(HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(Model.AreaName)))");
请不要忘记在@using Newtonsoft.Json
页面顶部添加chtml
。