VS 2015 Razor Autocomplete/Intellisense 下拉列表在下拉后立即隐藏

VS 2015 Razor Autocomplete/Intellisense dropdown hides immediately after dropdown

在 VS 2015 中,只有在 Razor (.cshtml) 文件中,大约一半的时间 autocomplete/suggestion list/intellisense 无法正常工作(抱歉,不确定实际术语.. . 当你键入一个对象并点击 . 并且属性和方法列表显示为 select from)

行为是当我点击 . 时,列表会弹出几分之一秒然后关闭。它发生得太快了,我尝试快速 Backspace.Backspace. 循环几次,至少 see 我需要的名字,但我通常无法得到它,最终不得不从代码的其他地方找到确切的名字。极度恼火...

它偶尔会发生,我找不到真正的模式。以下是我排除的模式:

我检查了所有选项(Razor 似乎没有文本编辑选项?),尝试过清除缓存、重新加载 solution/projects、重新启动 VS,所有这些似乎仍然存在不提供模式。

有没有人遇到过这个问题并且知道我还能在哪里修复它?

例子 这是一个非常简单的例子...新项目,很少code/files,非常简单的视图。在 Model. 停止的地方,我应该有通常的基本方法和一个 'Items' 集合。它弹出一瞬间然后消失...不涉及 lambdas/complex 视图解析(这也是可重现的):

更新:模式

我注意到的事情:

在整个 VS2015 的 lambda 语句期间,我都会遇到这种情况。

编辑代码 "mid-document" 时会发生这种情况,例如,如果在我输入的位置后面除了 ) 或 } 之外还有其他内容。 VS 似乎很难分辨当前语句在哪里结束以及下一条语句从哪里开始。

以下代码在此期间始终无法触发 Intellisense,即使显式调用也是如此。

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

在 Razor 中,在现有文本之间编辑代码并使用 lambda 语句是很常见的:

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

这可能就是为什么您只在 Razor 中遇到过这种情况。

我解决这个错误的方法是编写 ) 来关闭方法。

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

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

然后可以在此期间触发 Intellisense。

如果您使用的方法至少需要 lambda(例如 RadioButtonFor),您还需要为每个额外参数添加一个逗号。

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

如果 Intellisense 出现,但又立即消失,目前我发现的最佳解决方案是只键入任何已知成员的几个字母,然后使用 Ctrl-向左跳回到句点,并再次触发 Intellisense(Ctrl-Space 或退格键重新键入)。这通常会使它出现并停留。您必须删除之后键入的字符,这可能会令人沮丧。

我有同样的错误,我通过删除组件模型缓存的所有文件来修复它。

这是路径:

Users\YourName\AppData\Local\Microsoft\VisualStudio.0\ComponentModelCache

希望对您有所帮助

我还没有找到根本原因,但在所有情况下,CTRL+SPACE 都有效。这不是最好的,但光年总比没有好。

(这个快捷方式不是我过去使用过的,所以这可能是标准行为,但是......)如果你在点 Model. 并且自动完成列表消失了,CTRL+SPACE 始终将其恢复,当它恢复时,它会保留! 如果只有一个可能的自动完成成员,它将在 CTRL+ 时自动为您填充该成员SPACE

知道内容后我临时用ctrl+j解决

或者不带右括号继续写可以用补全:

@Html.LabelFor(m => m.Name

只要确保 ) 没有触及您正在编辑的文本,弹出窗口就会保持不变。

而不是...

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

使用...

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

智能感知似乎因触摸右括号而变得混乱。不理想,但这是我让它始终如一地为我工作的唯一方法。

在我的具体案例中,我能够通过安装最新版本的 Microsoft ASP.NET 和 Web Tools 来解决问题。

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

我安装后,问题就解决了。此更新很可能修复了旧版本可以修复的问题,但无论哪种方式我都很高兴。

(我在工具->扩展和更新...->更新->Visual Studio 画廊下的 Visual Studio 中找到了它)

每当这种恼人的事情发生在我身上时,我只要多加一个点就可以了。我每次都必须多加点。例如,如果我写这个并且智能闪烁并消失:

@Html.TextBoxFor(m => m. 

那我就这样做:

@Html.TextBoxFor(m => m..

智能感知现在会在第一个点之后显示。在 MS 修复它之前,我已经养成了这个习惯。

而不是...

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

使用...

@Html.Partial("ManageGrid", Model.