Метод MvcHtmlString.Create () не возвращает HTML-кодированную строку - PullRequest
3 голосов
/ 10 мая 2019

Я должен что-то упустить здесь, потому что этот документ

говорит, MvcHtmlString.Create("someStringHere") возвращает HTML-кодированную строку, но если у меня есть что-то вроде MvcHtmlString.Create("<h1>myHeading</h1>"), оно все равно отображается как

myHeading

(как заголовок), а не как кодированный текст &lt;h1&gt;myHeading&lt;/h1&gt;

Тогда что подразумевается под утверждением

MvcHtmlString.Create (String)
Создает строку в кодировке HTML, используя указанное текстовое значение.

Я не могу понять, был бы признателен, если бы кто-то мог объяснить, что означает документ и в чем разница между кодировкой, которую они пытаются отнести к кодировке html.

Заранее спасибо!

1 Ответ

3 голосов
/ 10 мая 2019

Я согласен с тем, что документация кажется вводящей в заблуждение для MvcHtmlString.

Однако, MvcHtmlString предназначен для использования, когда вы не хотите, чтобы строка была закодирована в HTML. Поведение бритвы по умолчанию заключается в кодировании выходных данных.

Передаваемая ему строка Html уже должна быть закодирована, чтобы обеспечить ее вывод без дополнительного кодирования.

Итак, предположим следующий HTML-помощник:

public static class HtmlHelper
{     
    public static string GetHtmlString(this System.Web.Mvc.HtmlHelper htmlHelper)
    {
        return "<h1>myHeading</h1>";
    }

    public static MvcHtmlString GetMvcHtmlString(this System.Web.Mvc.HtmlHelper htmlHelper)
    {
        return MvcHtmlString.Create("<h1>myHeading</h1>");
    }
}

В режиме Razor:

@Html.GetHtmlString()
@Html.GetMvcHtmlString()

Вывод будет:

&lt;h1&gt;myHeading&lt;/h1&gt

myHeading

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...