Получение незашифрованного HTML из помощника HTML - PullRequest
0 голосов
/ 26 мая 2018

За эти годы было много ответов на этот вопрос, и, прежде чем кто-то на меня закричит, я попробовал их все и просто не могу работать.Я использую MVC 5, Razor 3, Visual Studio 2017. Вот упрощенный тест:

В моей папке App_Code у меня есть файл SSLhelpers.cshtml, который содержит:

@helper Macro(string Htext, string Ptext)
{
    <h2>@Htext</h2>
    <p>@Ptext</p>
}

InНа мой взгляд у меня есть:

@SSLhelpers.Macro("This is my header", "This is my paragraph text. We should 
be <strong>bold</strong> here but we're not.")

Сгенерированный HTML-код:

<h2>This is my header</h2>

<p>This is my paragraph text. We should be &lt;strong&gt;bold&lt;/strong&gt; 
here but we're not.</p>

Как мне избежать кодировки?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Создайте пользовательский помощник (пространство имен, на которое ссылаются представления):

    public static HtmlString TestHtmlString(this HtmlHelper html, string hText, string pText)
    {
        var h = new TagBuilder("h2");
        var p = new TagBuilder("p");
        h.InnerHtml = hText;
        p.InnerHtml = pText;
        return new HtmlString(h.ToString(TagRenderMode.Normal) + p.ToString(TagRenderMode.Normal));
    }

, затем вы можете использовать его в своих представлениях:

@Html.TestHtmlString("This is my header", "This is my paragraph text. We should be <strong> bold </strong> here but we're not.")
0 голосов
/ 26 мая 2018

Вы можете использовать HtmlString так:

@helper Macro(string Htext, string Ptext)
{
    <h2>@(new HtmlString(Htext))</h2>
    <p>@(new HtmlString(Ptext))</p>
}
...