Преобразовать строку в HTML для вставки в абзац через WebMethod - PullRequest
1 голос
/ 01 апреля 2019

Я делаю страницу технического обслуживания, где люди могут хранить описание того, что он скажет, в файле ресурсов. На данный момент в требовании они даже не знают, будет ли текст чистым текстом или будут ли теги типа <a></a>.Поэтому на данный момент я должен предположить, что это будет так.

Этот проект был выполнен в Webforms Framework 3.5 в VS2010.

Для простоты я расскажу соответствующие части:

<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>

Backend:

[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правильно).

Чего мне не хватает?

1 Ответ

1 голос
/ 01 апреля 2019

Здесь есть две проблемы. Во-первых, вам нужно удалить вызов HtmlEncode() в логике C # для возврата простой строки HTML. Во-вторых, вам нужно использовать метод jQuery html() для его отображения вместо text(), так как последний снова будет кодировать HTML.

string mensaje = Resources.MaintenanceDescription;
$("#Description").html(msg.d);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...