ASP.net MVC 3 Razor - jQuery Intellisense

Posted

技术标签:

【中文标题】ASP.net MVC 3 Razor - jQuery Intellisense【英文标题】: 【发布时间】:2011-07-07 16:03:53 【问题描述】:

我正在使用带有 Razor 视图引擎的 Visual Studio 2010 / ASP.net MVC 3。我使用 Internet 应用程序模板创建了一个新项目。我需要做什么才能让 Intellisense 正常工作?

【问题讨论】:

现在还不行吗?也许尝试重新安装 ASP.NET MVC 3。 不是。我前几天刚安装。 :( 可能会在 Microsoft Connect 站点上打开一个错误。我看到很多人都在抱怨这个。话虽如此,我从来没有遇到过问题 :-) 并不是说​​我很关心 Intellisense,但它有时会派上用场。 这个主题对我的帮助更大(与 2012 年的用户相比):***.com/questions/11488208/… 【参考方案1】:

如果标题指定的是 jQuery,请尝试在 Views/Shared/_layout.cshtml(或 .vbhtml)文件中的标记中添加行:

@if (false)  <script src="../../Scripts/jquery-1.4.4-vsdoc.js" type="text/javascript"></script> 

这会将智能感知文件引用到 VisualStudio,但仍不会在运行时引用它。

请记住,指向相对于您放置此代码的文件的 vsdoc 文件。任何类似 ~/Url.Content() 的代码或任何其他运行时代码对于智能感知的 VS 都是不可见的。 这正是if (false) 对运行时隐藏脚本引用的原因(if 块未执行),但没有对 VS intellisense 隐藏它(并使用 Url.Content() 左右向 .min.js 提供另一个引用文件)。

【讨论】:

不幸的是,这也没有用。可能需要重新安装VS2010什么的。 你安装了 Resharper 吗?如果有,是哪个版本?并且将 R# 设置中的 intellisene 选项更改为 Visual Studio 会改变什么吗? 您可以在 *.js 文件中使用相同的技巧。从解决方案资源管理器拖放。起初我没有意识到这一点,希望对您有所帮助。 @MohamedMeligy:这对我有用。以及关于在 Greg 的回答中不使用 @Url.Content(...) 的评论。我不明白的是,if(false)... 的含义是什么,这似乎毫无意义,但它有效!你能解释一下吗? if(false) ... 位是为了防止代码在运行时执行,以便在运行时不引用大的重注释 -vsdoc.js(您应该单独引用 min .js 文件以及正常执行和引用)。使用 Url.Content()/~ 或在运行时评估的任何代码将阻止 VS 检测 -vsdoc.js 文件的智能感知。我已将这些注释添加到答案本身。感谢您提出。【参考方案2】:

来自http://blog.meidianto.com/2010/05/13/vs2010-tips-7-how-to-make-jquery-intellisense-work-for-external-javascript-file/

将 jquery 文件拖入你想要智能感知的 js 文件中,如下所示:

然后它将像这样工作:

【讨论】:

问题是关于 Razor 文件(.cshtml、.vbthml)而不是 JavaScript 文件。当您需要从另一个 JavaScript 文件 (.js) 中的一个 JavaScript 文件自动完成时,&lt;reference&gt; 语法有效。 我也面临同样的问题,尝试了您的拖放引用。现在它正在工作,但是这样我必须在我的所有视图中拖放 jquery*.js 文件。有没有办法让我在布局视图中引用它会自动出现在所有视图中【参考方案3】:

我找到了对我有用的很好的解释: 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> 

应该添加到每个视图(需要智能感知的地方)。这将启用智能感知,但不会在运行时添加第二个引用。

【讨论】:

我发现当您在脚本引用中使用 Url.Content("~/Scripts/jquery-1.4.4.min.js") 时,智能感知不起作用。显然,在您运行之前它无法确定路径。您似乎还需要在您想要智能感知的每个页面中执行此操作,而不仅仅是将其添加到布局/母版中。 哇,所以基本上智能感知是完全没用的,除非你用无用的 if 块来混淆每个视图,因为你想要智能感知的每个 javascript 引用。现在对 Visual Studio 真的很失望。 @John Bubriski 请看下面我的回答。【参考方案4】:

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

但是 - solution here 似乎被推荐的方法似乎很有效,现在我对我在 _references.js 中添加引用的所有文件的所有引用都有智能感知,但没有需要运行时错误技巧位,并且可以保持视图完全没有引用。

【讨论】:

以上是关于ASP.net MVC 3 Razor - jQuery Intellisense的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 3、Razor 视图和可移植区域

从 Razor View-MVC3 ASP.NET 中的 Web.config 访问键值

[Asp.Net Core]MVC_Razor布局

[Asp.Net Core]MVC_Razor布局

ASP.NET MVC Razor

[ASP.NET Core 3.1 MVC Razor页面仅在模型成员有效时显示图标