Почему Razor не может найти моего помощника HTML? - PullRequest
6 голосов
/ 15 декабря 2010

Я пытаюсь портировать «классическое» представление ASP.NET MVC на Razor и застрял при попытке использовать традиционный (не Razor) Html вспомогательный метод.Вспомогательный метод имеет следующую подпись:

public static string WrappedValidationSummary(this HtmlHelper htmlHelper, string SummaryError)
{
...
}

Вспомогательный метод работает нормально при использовании его в обычных (не Razor) представлениях.

При использовании его в представлении Razor, подобном этому:

@Html.WrappedValidationSummary("Mitarbeiter konnnte nicht angelegt werden.");

Я получаю сообщение об ошибке во время выполнения, что

'System.Web.Mvc.HtmlHelper' не содержит определения для 'WrappedValidationSummary' и не имеет метода расширения«WrappedValidationSummary», принимающий первый аргумент типа «System.Web.Mvc.HtmlHelper», может быть найден (вам не хватает директивы using или ссылки на сборку?)

Проверка синтаксиса Razor в Visual Studioи Intellisense не имеют проблем с поиском определения моего метода расширения.Перекомпиляция проекта не помогает.

Что не так?

Ответы [ 2 ]

18 голосов
/ 15 декабря 2010

Вы добавили пространство имен помощника в файл Views / web.config?

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="CUSTOM_NAMESPACE" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

Вышеописанное будет работать только в том случае, если вы используете RC, если вы используете раннюю бета-версию, вы 'Мне нужно добавить пространство имен на странице или Global.asax.

Кроме того, я бы предложил изменить тип возвращаемого значения на HtmlString.

return new HtmlString(STRING_VALUE);
5 голосов
/ 09 марта 2011

В качестве альтернативы вы можете использовать using в первой строке вашего представления вместо Views / Web.config , если вы просто хотите использовать для определенного файла представления.

@using your_current_web_namespace
.
.
.
@Html.WrappedValidationSummary("Mitarbeiter konnnte nicht angelegt werden.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...