Как выглядит объявление класса? Убедитесь, что вы сделали сам класс static
:
public static class MyHelpers
{
public static string OutputBlah(this HtmlHelper helper)
{
return helper.InnerWriter.ToString();
}
}
А затем используйте обычное свойство Html
типа HtmlHelper
в View
:
<%= Html.OutputBlah() %>
Ответ на дополнительный вопрос от ОП:
При объявлении метода, подобного этому (метод static
в static class
и первый параметр с ключевым словом this
), вы определяете метод расширения - особенность, которая была представлена в C # 3.0. Основная идея заключается в том, что вы определяете метод, который подключается к другому классу, таким образом расширяет it.
В этом случае вы расширяете класс HtmlHelper
(потому что это тип параметра this
) и тем самым делаете .OutputBlah()
доступным для любого экземпляра HtmlHelper
. Если вы изучите свойство Html
ViewPage
, вы заметите, что оно на самом деле имеет тип HtmlHelper
.
Поэтому, когда вы используете Html.OutputBlah()
в своем представлении, вы фактически получаете доступ к экземпляру HtmlHelper
, содержащемуся в свойстве Html
страницы просмотра, и вызываете собственный метод расширения для него.