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

jle*_*ach 43 intellisense razor visual-studio-2015

在2015年VS,只有当剃刀(.cshtml)文件,时间大约一半的自动完成/建议列表/智能感知无法正常工作(对不起,不知道实际刑期...当你键入一个对象,并击中.和显示的属性和方法列表可供选择)

行为是当我点击时.,列表会弹出几分之一秒然后关闭.它发生得这么快我尽量快办Backspace,.,Backspace,.循环几次,至少看到我需要的名字,但我通常俊男得到它,最终不得不从代码的其他地方找到的确切名称.非常烦人......

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

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

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

有没有人遇到这个,并有任何想法,我可以找到其他什么来解决它?

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

在此输入图像描述

更新:模式

我注意到的事情:

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

jle*_*ach 21

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

(这个快捷方式不是我以前使用的那个,所以这可能是标准行为,但是......)如果你在点Model.和自动完成列表消失,CTRL + SPACE会一直将它重新启动,当它回来了,它留了下来! 如果只有一个可能的自动完成成员,它将在CTRL + SPACE时自动为您填充成员

  • 这确实有帮助,但是一旦我输入下一个字符,intellisense下拉菜单就会再次消失. (3认同)

fri*_*gle 20

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

当编辑代码"mid-document"时会发生这种情况,例如,如果除了a)之外还有其他内容,或者我正在键入的地方.VS似乎很难说出当前声明的结束和下一个声明的开始.

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

var subset = initialSet.Where(x => x.
var result = new Whatever();
Run Code Online (Sandbox Code Playgroud)

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

<strong>@Html.DisplayFor(m => m.</strong>
Run Code Online (Sandbox Code Playgroud)

这可能就是为什么你只能在Razor中体验这一点.

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

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

<strong>@Html.DisplayFor(m => m.)</strong>
Run Code Online (Sandbox Code Playgroud)

然后可以在该时段触发智能感知.

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

<strong>@Html.RadioButtonFor(m => m.,)</strong>
Run Code Online (Sandbox Code Playgroud)

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

  • 您知道吗,而不是删除点和重新输入,您可以按`ctrl` +`space`打开智能感知? (4认同)
  • 我们应该做些什么来加快修复这个bug?我有同样的问题 - 这部分工作(首先删除括号),但我必须返回空格点一次,以使智能感知列表保持可见.通常它只发生在lamdas,但它偶尔会在其他地方发生.我喜欢快速做事,而intellisense对此非常重要 - 尤其是自动完成. (3认同)
  • 我很惊讶这个bug如何如此广泛和可重复,但它不仅使它成为发布版本,而且即使VS2015在Update 2上,它仍然没有得到修复. (2认同)
  • wf4的解决方案是有效的 - 至少在他们修复它之前(2018年?)! (2认同)

Car*_*lin 14

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

代替...

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

使用...

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

通过触摸闭括号,intellisense似乎感到困惑.不理想,但这是我能让它一直为我工作的唯一方法.