【问题标题】:Convert string to HTML to inject to paragraph via WebMethod将字符串转换为 HTML 以通过 WebMethod 注入段落
【发布时间】:2019-08-22 20:25:42
【问题描述】:

我正在做一个维护页面,人们可以在其中存储对资源文件中的内容的描述,在这一点上,他们甚至不知道文本是纯文本还是带有<a></a> 之类的标签。所以在这一点上,我不得不假设它会是这样。

本项目是在VS2010的Webforms framework 3.5中制作的。

为简单起见,我将揭示相关部分:

<article>
    <img alt="an image" src="Images/logo.jpg"/>
    <h2>Site under Maintenance</h2>
    <div>
        <p id="Description"></p>
    </div>
</article>

<script src="Includes/jquery-1.12.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            type: "GET",
            url: "MaintenanceSite.aspx/GetMaintenanceDescription",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                $("#Description").text(msg.d);
            }
        });
    });
</script>

后端:

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string GetMaintenanceDescription()
{
    string mensaje = HttpUtility.HtmlEncode(Resources.MaintenanceDescription);
    return mensaje;
}

问题是,我在我的段落中收到了这个:

&lt;To href=&quot;&quot;&gt;Contact Us&lt;/a&gt;

(没有空格,因为堆栈溢出正在正确解析 html)。

我错过了什么?

【问题讨论】:

  • html() 正在写“联系我们”而不是html a 标签
  • 谢谢你,工作完美
  • 很高兴你能成功。我在下面为您添加了答案

标签: c# jquery visual-studio-2010 webforms


【解决方案1】:

这里有两个问题。首先,您需要在 C# 逻辑中删除对 HtmlEncode() 的调用以返回纯 HTML 字符串。其次,您需要使用 jQuery 的 html() 方法而不是 text() 来显示它,因为后者将再次对 HTML 进行编码。

string mensaje = Resources.MaintenanceDescription;
$("#Description").html(msg.d);

【讨论】:

    猜你喜欢
    • 2013-03-03
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    相关资源
    最近更新 更多