ASP.NET MVC3 Razor-потерянный intellisense при размещении вида в альтернативном месте?
VS2010 Ultimate, ASP.NET MVC 3 Вт / бритва.
Я создал пользовательский механизм просмотра в моем приложении MVC3, который позволяет вложенные области, такие как
~/areas/admin
/marketing
/views
index
/controllers
marketingController
/email
/views
index
...
/controllers
emailController
/templates
/views
index
edit
...
/controllers
templatesControler
И т. д.
Все это прекрасно работает, за исключением того, что я, кажется, потерял intellisense в представлениях, которые не находятся в стандартном местоположении ~/areas/area_name/views/myview.cshtml
.
Есть предложения?
Обновить
Просто в шутку я добавил оператор @inherits
@inherits System.Web.Mvc.WebViewPage<Namespace.Models.Class>
И intellisense начал работать. Затем я удалил это заявление и онпродолжает работать.
Есть ли в файле проекта какой-то параметр или что-то, что говорит Visual Studio, какой тип intellisense применить к открытому файлу, кроме расширения файла? (Если бы расширение было все, что использовалось, я ожидал бы, что оно будет намного более последовательным).
Обновление 2
При добавлении паутины.config к каждой из моих папок просмотра исправляет проблему довольно хорошо, помещая конфигурацию razor в корневой веб.конфиг-нет.
После добавления требуемого раздела system.web.webPages.razor
в ~/web.config
,
-
Я добавляю бритву .файл представления cshtml в одну из моих вложенных папок представления.
- Intellisense работает.
- я переименовываю файл (сохраняя .расширение cshtml)
- Intellesense и подсветка синтаксиса перестают работать.
- я закрываю переименованный файл и снова открываю его - все снова начинает работать.
- или, вместо того, чтобы закрыть и снова открыть файл, я переименовываю его обратно в исходное имя, он запускается снова работаю.
Это похоже на ошибку VS-переименование файла (но сохранение правильного расширения) не должно, насколько я могу судить, вызывать такого рода поведение. Я продолжу помещать отдельные web.config
s в каждую из моих папок просмотра, так как это исправляет проблему, но раздражает необходимость загромождать решение, когда я ожидаю, что эти настройки будут распространяться через дерево решений как другие веб-страницы.настройки конфигурации делают.
Также стоит отметить, что, независимо от того, где находится бритва конфигурация находится, сайт продолжает функционировать правильно независимо от того, работает intellesense или нет.
Решено
Я был проинформирован (невероятно быстро) властями, что это была известная проблема, которая исправлена в MVC3 RTM и VS2010 SP1. Проблема исчезла после обновления моей установки MVC3 и добавления SP1.
1 ответ:
Папка Views содержит Web.конфигурационный файл, который задает параметры по умолчанию для представлений Razor , включая базовый тип по умолчанию и пространства имен, а также пользовательский узел, который включает Директиву
@model
.Представления Razor в другой папке не наследуют эту конфигурацию.
Вам нужно добавить эту конфигурацию в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" /> </namespaces> </pages> </system.web.webPages.razor>