2014-01-24 74 views
1

我有存储在长相酷似该数据库中的某些HTML:写HTML页面中的MVC 4

<strong><a href="http://www.google.com" target="_blank">Maintenance scheduled </a></strong>tomorrow 

我想输出正确格式为HTML的Razor视图。我不想看到<>,我只想要HTML。

你可以从这个片段,我已经尝试了几种不同的东西看:

div id="maintenanceMessage"> 
      @*@HttpUtility.HtmlDecode(sysSettings.MaintenanceMessage)*@ 
      @*@HttpUtility.HtmlDecode((new HtmlString(sysSettings.MaintenanceMessage)).ToString())*@ 
      @Html.Raw(sysSettings.MaintenanceMessage) 
</div> 

但在任何情况下它不断显示其文本:

<strong><a href="http://www.google.com" target="_blank">Maintenance scheduled </a></strong>tomorrow 

,而不是格式化的HTML。 我不确定我在做什么错?

回答

3

尝试

@MvcHtmlString.Create(HttpUtility.HtmlDecode(sysSettings.MaintenanceMessage)) 
+1

虽然需要小心使用,但如果内容是用户生成的,您将被广泛开放给XSS攻击 – mxmissile

+0

非常好。那就是诀窍。在这种情况下,只有最高级别的管理员才能访问该字段,并且该消息只会显示在网站的后端。但是,警告指出。谢谢! – jwatts1980

0

,如果你把它发送到视图它的工作原理之前更换ASCII。我们通过这些发送我们的字符串

public string Decode(string value) 
    { 
     return (value) 
      .Replace("&quot;", "\"") 
      .Replace("&lt;", "<") 
      .Replace("&gt;", ">"); 
    } 

    public string Encode(string value) 
    { 
     return (value) 
      .Replace("\"", "&quot;") 
      .Replace("'", "''") 
      .Replace("<", "&lt;") 
      .Replace(">", "&gt;"); 
    } 
0

检查您的存储内容。也许当你试图将它存储在数据库中时,它会用编码字符替换特殊的HTML字符。例如:

在Unicode格式,从HTML标签每<标志将与&#60来代替;字符。

最好存储原始HTML,然后存储编码的HTML,这样就不必处理编码/编码转换。