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

时间:2016-03-25 01:55:21

标签: razor visual-studio-2015 intellisense

在VS 2015中,只有在Razor(.cshtml)文件中,大约有一半时间自动完成/建议列表/智能感知无法正常工作(抱歉,不确定实际术语......当您键入对象时并点击.并显示属性和方法列表以供选择)

行为是当我点击.时,列表会弹出几分之一秒然后关闭。它发生得太快我尝试快速Backspace.Backspace.周期几次,至少这个名字我需要,但我通常不能“得到它,最终必须从代码中找到其他地方的确切名称。非常烦人......

它偶尔发生,没有我能找到的真实模式。这是我排除的模式:

  • 打开的文件似乎并不重要。
  • 我是否关闭/重新打开文件似乎并不重要
  • 我是否导航到另一个文件并返回似乎并不重要
  • 它会在同一个文件中多次打开和关闭工作
  • 它似乎与任何特定的对象/属性/方法
  • 无关

我已经检查了所有选项(Razor似乎没有文本编辑选项?),尝试清除缓存,重新加载解决方案/项目,重新启动VS,所有这些似乎仍然没有提供模式。

有没有人遇到过这个问题并且有什么想法可以帮助我解决它?

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

enter image description here

更新:模式

我注意到的事情:

  • 如果我输入@model ns.ns.ns.type,它很少发生在命名空间的“基础”端。这是因为我越来越接近它发生的类型。这是间歇性的。
  • 在某些情况下,每次都可以完美地运行。例如,我经常使用DevExpress工具,从未在任何扩展上看到过这种行为(因此,@Html.DevExpress().(和其他类似的,不一定是DevEx模型)永远不会导致问题)
  • 几乎所有的时间我都在访问@Model(这是我最想要的地方!)。我发现了一些每次都可以重现的情况(参见上面的例子),但它大约是90%+
  • 偶尔,当我处理对象树时,下一个工作时会失败(例如:@models ProjName.Web.App.Subscriptions.Models.AccountCreateVM ...它可能会在Subscriptions上失败但在Models上工作正常
  • 偶尔,开始在自动完成内输入名称会将其重新启动并重新开始工作。在上面的示例中,开始为Acc键入AccountCreateVM会导致它再次开始工作。

8 个答案:

答案 0 :(得分:20)

在lambda语句中,整个VS2015都会发生这种情况。

在编辑代码" mid-document"时会发生这种情况,如果除了a)之外还有其他内容,或者在我打字的地方之后。 VS似乎在努力说出目前的声明在哪里结束&下一个声明开始。

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

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

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

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

这可能就是为什么你只在Razor中体验过这个。

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

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

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

然后可以在这段时间内触发智能感知。

如果您使用的方法需要的不仅仅是lambda(如RadioButtonFor),那么您还需要为每个额外参数添加逗号。

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

如果Intellisense 出现,但又一次消失,我到目前为止找到的最佳解决方案是只输入任何已知成员的几个字母,然后使用Ctrl-Left跳过回到句点,再次触发Intellisense(Ctrl-Space或backspace-retype)。这通常会让它出现并留下来。您必须删除之后键入的字符,这可能令人沮丧。

答案 1 :(得分:20)

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

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

时为您自动填充成员

答案 2 :(得分:14)

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

而不是......

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

使用...

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

intellisense似乎通过触摸闭括号而感到困惑。不理想,但这是我能够始终如一地为我工作的唯一方式。

答案 3 :(得分:4)

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

这是路径:

用户\ YOURNAME \应用程序数据\本地\微软\ VisualStudio的\ 14.0 \ ComponentModelCache

希望有所帮助

答案 4 :(得分:3)

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

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

安装后,问题就消失了。这个更新很可能修复了可以用旧版本修复的内容,但无论哪种方式我都很开心。

(我在Visual Studio的工具 - &gt;扩展和更新...-&gt;更新 - &gt; Visual Studio库中找到了这个)

答案 5 :(得分:2)

当我知道内容时,我使用ctrl + j作为临时解决方案。

或者在没有右括号的情况下继续写作可以使用完成:

@ Html.LabelFor(m =&gt; m.Name

答案 6 :(得分:0)

每当这件烦人的事情发生在我身上时,我只是加了一个额外的点,然后就行了。我每次都要加上额外的点。例如,如果我写这个并且intellisence闪烁并消失:

@Html.TextBoxFor(m => m. 

然后我就这样做了:

@Html.TextBoxFor(m => m..

intellisense现在将在第一个点后显示。我已经习惯了这个习惯,直到MS找到它为止。

答案 7 :(得分:0)

而不是......

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

使用...

@Html.Partial("ManageGrid", Model.