С помощью Razor View Engine каждый раз, когда вы выводите строку прямо на страницу, она кодируется в HTML. например.:
@"<p>Hello World</p>"
фактически будет выводиться на страницу как:
<p>Hello World </p>
Что будет отображаться в браузере как:
‹P› Привет, мир ‹/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
, и я делал это неправильно в прошлом.