Подтвердить что ты не робот

Почему мои помощники Html не имеют intellisense?

Я не могу получить intellisense для своих собственных html-помощников. Мой CustomHtmlHelpers.cs выглядит следующим образом:

using System.Web.Mvc;
using System.Text;
using System.Web;

    namespace laget.Web.Helpers
    {
        public static class CustomHtmlHelpers
        {
            //MY HELPERS
        }
    }

и в моем Web.config:

    <pages>
      <namespaces>
        <add namespace="laget.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages"/>
        <add namespace="System.Web.Helpers" />
      </namespaces>
    </pages>

Если я поставлю <@using laget.Web.Helpers>, на мой взгляд, проблема с intellisense исправлена.

Если этого не достаточно с кодом в Web.config?

4b9b3361

Ответ 1

Иногда это не работает сразу. Попробуйте закрыть файл .cshtml и снова открыть его. Тогда, если это не сработает, попробуйте перезапустить Visual Studio. Также убедитесь, что вы действительно скомпилировали свой проект, intellisense не будет работать с не скомпилированными помощниками.

Ответ 2

Я уверен, что вы не редактируете правильный файл Web.config.

Вам нужно добавить пространство имен в каталог Views.

<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="laget.Web.Helpers" />
    </namespaces>
  </pages>
</system.web.webPages.razor>

Ответ 3

В большинстве случаев вам не нужно перезапускать Visual Studio. Все, что вам нужно сделать, это закрыть файл .cshtml и снова открыть его.

Ответ 4

Он нужен на локальной странице. Я почти уверен, что это связано с разрешением пространства имен. Он не совсем уверен в том, что вы имеете в виду без инструкции локального использования.

Ответ 5

Я столкнулся с этим и сегодня. Иногда просто закрывая окно просмотра Razor в Visual Studio и повторно открывая его, он будет делать трюк без необходимости полной перезагрузки Visual Studio.

Ответ 6

Я попытался решить проблему, подобную этой вчера. У меня была предварительно скомпилированная dll (название проекта, то есть MyHtmlHelpers), содержащее помощники и множество других классов.

У меня была сборка, на которую ссылались в веб-проекте, и все "стандартные" -helpers появились в intellisense, но, хотя я добавил пространство имен как в web.config в корне, так и в папке views, ничего не работало. При запуске помощники проекта работают, но не в intellisense.

Я добавил новый класс и написал новый html-помощник внутри веб-проекта, добавив пространство имен в web.config. И это сработало.

Через несколько часов добавьте мою последнюю карту, добавив проект MyHtmlHelpers в то же решение, что и мой веб-проект. Это сделал трюк. Я ничего не менял в конфигурациях, просто добавил проект в одно и то же решение и изменил ссылку на точку в проекте, созданном скомпилированной dll.

Неужели это странно? VS-ошибка?

Ответ 7

Я обнаружил, что добавляю ссылку на неверный web.config. Это не основная конфигурация, а web.config в каталоге представлений...

Ответ 8

Итак, теперь я покажу вам шаги

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

2. Добавьте пакет nuget MVC (5.0) ( щелкните правой кнопкой мыши проект в обозревателе решений → Управление пакетами NuGet → найдите MVC и установите "Microsoft ASP.NET MVC" )

3.Закройте все и все открытые файлы .cshtml

4. Проект с правом щелчка → Свойства → Сборка → изменить путь вывода к вашему проекту "bin/"

5. Добавьте следующий минимальный Web.config в корень вашего проекта библиотеки классов (веб-конфигурационный файл необходим исключительно для intellisense. Конфигурация (через Web.config) должны выполняться в WebApplication, где размещается ваша сборка ClassLibrary)

6. Очистите и создайте решение.

7.Откройте файл cshtml и попробуйте сейчас:)

Ответ 9

Я обнаружил, что если он все еще не работает, вам может потребоваться перейти к свойствам настраиваемого класса и изменить действие сборки из "содержимого" для "компиляции". Это разрешило это для меня.