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

VS 2015 Razor Autocomplete/Intellisense выпадающий список сразу после выпадающего списка

В VS 2015 только в файлах Razor (.cshtml) примерно половина времени, когда список автозаполнения/предложения/intellisense работает некорректно (извините, не уверен, что фактический термин... при вводе объекта и нажмите ., и список свойств и методов отобразит их выбор)

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

Это случается спорадически, без реальной картины, которую я могу найти. Здесь шаблоны, которые я исключал:

  • Открываемый файл не имеет значения.
  • Независимо от того, закрываю ли/открывать файл, кажется, не имеет значения.
  • Если я перехожу к другому файлу и обратно, похоже, не имеет значения.
  • Он будет работать/не работать многократно в одном и том же файле
  • Это не похоже на какой-либо конкретный объект/свойство/метод.

Я проверил все свои параметры (кажется, нет вариантов редактирования текста для Razor?), попробовали очищающие кэши, решение/проекты перезагрузки, перезапуск VS, все из которых, похоже, все еще не содержат шаблонов.

Кто-нибудь сталкивался с этим и имел какие-либо идеи о том, где еще я могу его исправить?

Пример Вот очень простой пример... новый проект, очень маленький код/​​файлы, очень простой вид. Где останавливается Model., я должен иметь обычные базовые методы и коллекцию "Элементы". Он появляется в течение секунды секунды, а затем исчезает... не задействован парсинг лямбда/комплексного просмотра (это также воспроизводимо):

введите описание изображения здесь

Обновление: шаблоны

Что я заметил:

  • Если я вхожу в @model ns.ns.ns.type, он редко встречается в конце "базового" пространства имен. Это, как я дальше к типу, что это происходит. Это прерывисто.
  • В некоторых случаях он работает отлично, каждый раз. Например, я часто использую инструменты DevExpress и никогда не видел поведения ни на одном из своих расширений (поэтому @Html.DevExpress(). (и другие подобные, не обязательно DevEx-модели) никогда не вызовут проблемы)
  • Это происходит почти всегда, когда я получаю доступ к моему @Model (именно там я его больше всего хочу!). Я нашел некоторые случаи, когда это воспроизводится каждый раз (см. Пример выше), но это около 90% +
  • Иногда, когда я работаю через дерево объектов, один будет терпеть неудачу, пока следующий будет работать (ex: @models ProjName.Web.App.Subscriptions.Models.AccountCreateVM... он может выйти из строя на Subscriptions, но работать нормально на Models)
  • Иногда, начиная вводить имя в автозаполнении, он возвращает его обратно в механизм, и он снова начинает работать. В приведенном выше примере начало ввода Acc для AccountCreateVM заставляет его снова работать.
4b9b3361

Ответ 1

Я не нашел основную причину, но во всех случаях работает CTRL+SPACE. Это не лучшее, но легкие годы лучше, чем ничего.

(этот ярлык не тот, который я использовал в прошлом, так что это, вероятно, стандартное поведение, но...) Если вы находитесь в точке Model., а список автозаполнения исчезает, CTRL + SPACE последовательно возвращает его, и когда он вернется, он останется! Если есть только один возможный член автозаполнения, он автоматически заполнит этот элемент для вас по CTRL + SPACE

Ответ 2

Это происходит для меня во всем VS2015 во время лямбда-операторов.

Это происходит при редактировании кода "mid-document", как в случае, если есть что-то помимо a) или} следующего, где я печатаю. Кажется, что VS пытается определить, где заканчивается текущий оператор, и начинается следующее утверждение.

Следующий код будет последовательно не запускать Intellisense в период, даже если он явно вызван.

var subset = initialSet.Where(x => x.
var result = new Whatever();

В Razor очень часто используется редактирование кода между существующим текстом и использованием операторов лямбда:

<strong>@Html.DisplayFor(m => m.</strong>

Вероятно, поэтому вы испытываете это только в Razor.

Как я могу обойти эту ошибку, просто написать), чтобы закрыть метод.

var subset = initialSet.Where(x => x.)
var result = new Whatever();

<strong>@Html.DisplayFor(m => m.)</strong>

Intellisense может быть запущен в течение периода.

Если вы используете метод, который требует минимум больше, чем только лямбда (например, RadioButtonFor), вам также необходимо ввести запятую для каждого из дополнительных параметров.

<strong>@Html.RadioButtonFor(m => m.,)</strong>

Если Intellisense появляется, но сразу исчезает снова, лучшим решением, которое я нашел до сих пор, является просто набрать несколько букв любого известного члена, а затем использовать Ctrl-Left, чтобы вернуться к периоду, и снова запустить Intellisense (Ctrl-Space или backspace-retype). Обычно это заставляет его появляться и оставаться. Вам придется удалить символы, которые вы набрали впоследствии, что может расстраивать.

Ответ 3

Просто убедитесь, что ) не касается текста, который вы редактируете, и всплывающее окно не будет оставаться.

Вместо...

@Html.Partial("ManageGrid", Model.)

Использование...

@Html.Partial("ManageGrid", Model. )

Похоже, что intellisense запутывается, касаясь близких круглых скобок. Не идеально, но это был единственный способ заставить меня работать для меня последовательно.

Ответ 4

У меня была такая же ошибка, и я исправил ее, удалив все файлы кэша компонентов.

Это путь:

Users\ВашеИмя\AppData\Local\Microsoft\VisualStudio\14,0\ComponentModelCache

Надеюсь, что поможет

Ответ 5

В моем конкретном случае я смог решить проблему, установив последнюю версию Microsoft ASP.NET и веб-инструменты.

https://marketplace.visualstudio.com/items?itemName=JacquesEloff.MicrosoftASPNETandWebTools-9689

Как только я установил его, проблема исчезла. Вполне вероятно, что в этом обновлении исправлено то, что можно было бы исправить с помощью старой версии, но в любом случае я счастлив.

(я нашел это в Visual Studio в разделе Инструменты- > Расширения и обновления...- > Обновления- > Галерея Visual Studio)

Ответ 6

Я использую ctrl + j как временное решение, когда знаю контент.

Или продолжать писать без правильной круглой скобки может использовать завершение:

@Html.LabelFor(m = > m.Name

Ответ 7

Всякий раз, когда эта неприятная вещь случается со мной, я просто добавляю дополнительную точку, а затем она работает. Я должен каждый раз ставить дополнительную точку. Например, если я пишу это, а intellisence мигает и исчезает:

@Html.TextBoxFor(m => m. 

то я просто делаю это:

@Html.TextBoxFor(m => m..

И intellisense теперь будет отображаться после первой точки. Я сделал это привычкой, пока у MS не будет исправления.

Ответ 8

Вместо...

@Html.Partial("ManageGrid", Model.)

Использование...

@Html.Partial("ManageGrid", Model.