Почему мои помощники 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?
Ответы
Ответ 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
Я обнаружил, что если он все еще не работает, вам может потребоваться перейти к свойствам настраиваемого класса и изменить действие сборки из "содержимого" для "компиляции". Это разрешило это для меня.