ASP.net MVC 3 Razor - jQuery智能感知

15

我正在使用Visual Studio 2010 / ASP.net MVC 3以及Razor视图引擎。我使用了Internet Application模板创建了一个新项目。我需要做什么才能让智能感知(Intellisense)正常工作?


现在它不工作吗?也许尝试重新安装ASP.NET MVC 3。 - Darin Dimitrov
不是这样的。我只是几天前安装了它。:( - Dismissile
也许可以在微软连接网站上报告一个错误。我看到很多人都在抱怨这个问题。话虽如此,我从来没有遇到过问题 :-) 虽然我不太关心Intellisense,但有时它可能会派上用场。 - Darin Dimitrov
这个主题对我帮助很大(相比于VS2012用户): https://dev59.com/4mgu5IYBdhLWcg3wOUgk - Sebastien H.
4个回答

31
如果标题指定为jQuery特定内容,尝试在Views/Shared/_layout.cshtml(或.vbhtml)文件的标签中添加一行代码:
@if (false) { <script src="../../Scripts/jquery-1.4.4-vsdoc.js" type="text/javascript"></script> }

这将引用Intellisense文件到Visual Studio,但在运行时不会引用它。

请记住,相对于放置此代码的文件,指向vsdoc文件。任何类似~/Url.Content()或任何其他运行时代码都不会被VS IntelliSense看到。
这正是为什么if (false)可以隐藏脚本引用从而使其不出现在运行时(if块未执行),但不会对VS IntelliSense造成影响(并提供另一个引用使用Url.Content()或类似方式到.min.js文件)。


很不幸,那也没起作用。可能需要重新安装VS2010或其他什么东西。 - Dismissile
你安装了Resharper吗?如果是的话,是哪个版本?更改R#设置中的Intellisense选项到Visual Studio会有任何变化吗? - Meligy
你可以在*.js文件中使用相同的技巧。从解决方案资源管理器中拖放即可。我一开始没有意识到这一点,希望能有所帮助。 - Daniel Harvey
@MohamedMeligy:这对我有用。还有关于不使用Greg的答案中的@Url.Content(...)的评论。我不明白的是,if(false){...}的意义是什么?那似乎毫无意义,但它确实起作用!你能解释一下吗? - Mohayemin
if(false) {...} 部分是为了防止代码在运行时执行,以便不会在运行时引用大型的、有很多注释的 -vsdoc.js 文件(你需要有一个单独的对 min.js 文件的引用,以便像通常一样执行和引用)。使用 Url.Content()/~ 或任何在运行时评估的代码都将阻止 VS 检测到 -vsdoc.js 文件以进行智能感知。我已经在答案本身中添加了这些注释。感谢您提出这个问题。 - Meligy
此外,为了添加 intellisense.js 文件,我还需要添加 jQuery 文件。 - Vitor Canova

9

1
该问题涉及到 Razor 文件 (.cshtml, .vbthml),而不是 JavaScript 文件。在一个 JavaScript 文件中需要从另一个 JavaScript 文件中获取自动完成时,<reference> 语法会起作用(.js)。 - Meligy
我也遇到了同样的问题,尝试了你的拖放引用。现在它可以工作了,但是这样做的话,我必须在所有视图中拖放jquery*.js文件。有没有一种方法,可以在布局视图中引用它,然后自动出现在所有视图中呢? - Amit Mishra

4
我在这里找到了一份对我有用的好的解释: http://theycallmemrjames.blogspot.com/2011/03/jquery-intellisense-with-aspnet-mvc-and.html 以下是需要翻译的内容:
这些代码行:
 @if (false) 
{ 
    <script src="../../Scripts/jquery-1.4.4.min.js" type="text/javascript"></script> 
    <script src="../../Scripts/jquery-ui.min.js" type="text/javascript"></script> 
}

应该在每个需要智能感知的视图中添加此项。这将启用智能感知,但不会在运行时添加第二个引用。


5
我发现当你在脚本引用中使用Url.Content("~/Scripts/jquery-1.4.4.min.js")时,智能感知功能无法正常工作。显然,在运行之前它无法确定路径。另外,似乎需要在每个想要智能感知的页面中都这样做,而不仅仅是将其添加到布局/主控制器中。 - Dismissile
6
哇,基本上除非你在每个视图中为想要智能感知的每个JavaScript引用添加无用的if块,否则智能感知是完全无用的。现在对Visual Studio感到非常失望。 - John B
@John Bubriski 请看下面我的回答。 - MemeDeveloper

2

在使用_layout.cshtml的Vs2012中,@Mohamed Meligy的解决方案对于使用该布局文件的视图似乎对我没有帮助。也许我错过了什么?

然而,这里的解决方案似乎是推荐的方法,非常有效,现在我可以智能感知所有添加到_references.js中的引用文件的所有引用,并且不需要运行时false技巧位,可以使视图完全清晰无误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接