Почему мои Html-помощники не имеют intellisense? - PullRequest
22 голосов
/ 24 февраля 2011

Я не могу получить 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?

Ответы [ 9 ]

24 голосов
/ 24 февраля 2011

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

6 голосов
/ 24 февраля 2011

Я почти уверен, что вы не редактируете правильный файл 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>
5 голосов
/ 01 сентября 2011

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

0 голосов
/ 22 сентября 2016

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

0 голосов
/ 06 марта 2014

Итак, сейчас я покажу вам шаги

1. Создайте или откройте существующий проект библиотеки классов (если вы откроете существующий, обязательно удалите пакет nuget 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 и попробуйте сейчас:)

0 голосов
/ 15 марта 2012

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

0 голосов
/ 18 января 2012

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

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

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

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

Разве это не странно? VS-ошибка?

0 голосов
/ 25 февраля 2011

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

0 голосов
/ 24 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...