«Все помощники, нацеленные на MVC 3 и выше, должны возвращать IHtmlString.» - только то, что мне нужно было знать!

ощью Razor View Engine каждый раз, когда вы выводите строку прямо на страницу, она кодируется в формате HTML. например.:

@"<p>Hello World</p>"

фактически получит вывод на страницу в виде:

&lt;p&gt;Hello World &lt;/p&gt;

Который будет отображаться в браузере как:

<p> Hello World </ p>

Вот проблема, хотя, при создании Html помощников, до сих пор, со старым механизмом представления aspx, я просто возвращал строку и выводил ее в браузер:

<%= Html.MyCoolHelperMethod(); %>

Так что мой вопрос в основном это. Должен ли я сделать это:

public static IHtmlString MyCoolHelperMethod(this HtmlHelper helper)
{
   return new helper.Raw("<p>Hello World</p>");
}

в этом случае я могу просто сделать это в моем cshtml:

@Html.MyCoolHelperMethod();

или я делаю это:

public static string MyCoolHelperMethod(this HtmlHelper helper)
{
   return "<p>Hello World</p>";
}

в этом случае мне нужно сделать работу в моем cshtml:

@Html.Raw(Html.MyCoolHelperMethod());

Очевидно, что при первом подходе представление выглядит намного чище, но мне просто интересно, на самом ли деле общий шаблон для помощников возвращаетIHtmlString и я делал это неправильно в прошлом.

Ответы на вопрос(1)

Ваш ответ на вопрос