【问题标题】:C# ASP.net render HTML StringC# ASP.net 渲染 HTML 字符串
【发布时间】:2014-08-29 22:41:27
【问题描述】:

我的标记中有一些这样的代码:

<% Response.Write(((String)objRow["Post"]).Trim()); %>

objRow["Post"] 中的值是 HTML 标记 - 类似于:

<p><span style="color: #ff0000;">asdsada</span></p>

其中的内容是使用 tinymce 创建的。我现在想渲染生成的 html - 基本上是以前创建的保存函数的视图函数。

目前,我的标记将你在我的网站上看到的 HTML 直接吐出 - 但我真正想要的是一行红色的文字,上面写着 asdsada。

请帮忙

【问题讨论】:

    标签: c# html asp.net rendering


    【解决方案1】:

    听起来您尝试显示的值已经是 html 编码的。试试这个:

    <%= HttpUtility.HtmlDecode((string)objRow["Post"]) %>
    

    【讨论】:

    • 这会引发以下错误:CS1502: 'System.Web.HttpUtility.HtmlDecode(string)' 的最佳重载方法匹配有一些无效参数
    • 将演员表添加到字符串
    【解决方案2】:

    我的 Asp.net 版本稍高一些,但这可能会对使用 .net Core 2.0 MVC 的人有所帮助。

    我在我的 Asp.Net Core 2.0 MVC 项目中使用以下方法渲染 html(html 是通过 Tiny MCE 创建的并保存在数据库中,然后在 Razor 视图上呈现)。

    请尝试以下两个步骤

    1) 在_ViewImports.cshtml中包含System.Net

    @using System.Net
    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    

    2) 在您的 View.cshtml 中使用 HtmlDecode 呈现 html:

    @Html.Raw(@WebUtility.HtmlDecode(Model.MyHtmlData))
    

    这对我有用,希望对你有帮助!

    但是没有 HtmlDecodeHtml.Raw 显示带有 html 标签的 MyHtmlData(没有渲染 html,只是显示它)。我猜,那是因为数据已经被 HTML 编码了,正如 Zdravko Danev 提到的:

    @Html.Raw(Model.MyHtmlData)
    

    【讨论】:

      【解决方案3】:

      您可以在 asp.net 中使用文字控件来显示文本,它会相应地呈现它。

      literal1.text = htmlcodeuwanttodisplay
      

      【讨论】:

        【解决方案4】:

        你有没有尝试过类似的东西

        Server.HtmlEncode("<p><span style='color: #ff0000;'>asdsada</span></p>");      
        

        【讨论】:

        • 请在发布之前检查您的答案。这不会解决问题。 HtmlDecode 就是答案。
        猜你喜欢
        • 2021-01-30
        • 2011-07-26
        • 2016-11-13
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        • 1970-01-01
        • 2023-02-21
        • 2018-08-30
        相关资源
        最近更新 更多