将字符串转换为 HTML 以通过 WebMethod 注入段落

Posted

技术标签:

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

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

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

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

<article>
    <img  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 标签 谢谢你,工作完美 很高兴你能成功。我在下面为您添加了答案 【参考方案1】:

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

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

【讨论】:

以上是关于将字符串转换为 HTML 以通过 WebMethod 注入段落的主要内容,如果未能解决你的问题,请参考以下文章

将 Html 转换为像字符串一样显示

使用 LINQ 将字符串转换为 int 以进行排序

将整数转换为字符缓冲区以进行串行通信......? [关闭]

如何将字符串转换为 html 颜色代码哈希?

C 将 20 位字符串转换为数字以进行 IBAN 验证

将包含 html 标记的存储字符串转换为 html 文本格式