【问题标题】:Write HTML to page in MVC 4在 MVC 4 中将 HTML 写入页面
【发布时间】:2014-01-24 17:48:36
【问题描述】:

我有一些 HTML 存储在数据库中,看起来完全像这样:

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

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

您可以从这个 sn-p 中看到我尝试了几种不同的方法:

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。 我不确定我做错了什么?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 c#-4.0 razor


    【解决方案1】:

    试试

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

    【讨论】:

    • 使用这个需要小心,如果内容是用户生成的,你将很容易受到 XSS 攻击
    • 优秀。那成功了。在这种情况下,只有最高级别的管理员才能访问该字段,并且消息只会显示在站点的后端。但是,警告指出。谢谢!
    【解决方案2】:

    如果您在将它发送到视图之前替换 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;");
        }
    

    【讨论】:

      【解决方案3】:

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

      在 Unicode 格式中,HTML 标记中的每个 符号都将替换为 < 字符。

      存储原始 HTML 比存储编码 HTML 更好,这样您就不必处理编码/编码转换。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-10
        • 2020-10-20
        • 1970-01-01
        • 1970-01-01
        • 2014-03-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多