Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Выпадающее меню VS 2015 Razor Autocomplete / Intellisense скрывается сразу после раскрывающегося списка

Автор вопроса: jleachОтветов: 8

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

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

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

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

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

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

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

Обновление: выкройки

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

  • Если я ввожу @model ns.ns.ns.type, это редко происходит ближе к "базовому" концу пространств имен. Это происходит по мере того, как я подхожу к типу. Этот прерывистый.
  • В некоторых случаях он работает отлично каждый раз. Например, я часто использую инструменты DevExpress и никогда не видел такого поведения ни в одном из их расширений (так что @Html.DevExpress(). (и другие подобные, не обязательно модели DevEx) никогда не вызовут проблемы)
  • Это происходит почти все время, когда я обращаюсь к своему @Model (именно там я больше всего этого хочу!). Я нашел несколько случаев, когда это воспроизводимо каждый раз (см. Пример выше), но это около 90% +
  • Иногда, когда я работаю с деревом объектов, один выходит из строя, а другой работает (например: _11 _... он может выйти из строя на Subscriptions, но работать нормально на Models)
  • Иногда начало ввода имени в автозаполнении приводит к тому, что он снова включается, и он снова начинает работать. В приведенном выше примере при вводе Acc для AccountCreateVM он снова начинает работать.
  • Дело не только в тебе. Это происходит и со мной внезапно. Понятия не имею почему. powlette 12.04.2016
  • Здесь тоже происходит ... и новая установка ... Chris Nevill 28.07.2016
  • Картер Медлин опубликовал решение. Решил проблему установкой последней версии Microsoft ASP.NET и Web Tools. Visual Studio в разделе Инструменты- ›Расширения и обновления ...-› Обновления- ›Галерея Visual Studio AlejandroDG 08.08.2019

razorintellisensevisual-studio-2015

Ответы

Ответ 1 · рейтинг 21 · jleach

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

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

Ответ 2 · рейтинг 20 · friggle

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

Это происходит при редактировании кода "в середине документа", например, если есть что-то, кроме а) или}, следующее за тем местом, где я печатаю. 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-Пробел или возврат с повторным вводом). Обычно это заставляет его появляться и оставаться. Впоследствии вам придется удалить символы, которые вы ввели, что может расстраивать.

Ответ 3 · рейтинг 14 · Carter Medlin

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

Вместо того...

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

Использовать...

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

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

Ответ 4 · рейтинг 4 · Carter Medlin

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

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

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

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

Ответ 5 · рейтинг 3 · tocqueville

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

Это путь:

Users \ YourName \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ ComponentModelCache

надеюсь, это поможет

Ответ 6 · рейтинг 1 · lgt945

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

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

@ Html.LabelFor (m => m.Name

Ответ 7 · рейтинг -1 · CodingYoshi

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

@Html.TextBoxFor(m => m.

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

@Html.TextBoxFor(m => m..

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

Ответ 8 · рейтинг -1 · Tom McDonough

Вместо того...

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

Использовать...

@Html.Partial("ManageGrid", Model.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы