如果您实现了Url Helper扩展以获取脚本文件的URL,那么如何使jQuery intellisense工作?

Jon*_*son 3 asp.net-mvc jquery visual-studio-2008

我已经实施了卡子门祖尔在他的MVC最佳实践指南已经建议的网址助手扩展这里

获取脚本文件的My Url Helper扩展方法:

public const string ScriptDir = "~/Assets/Scripts";
public static string Script(this UrlHelper helper, string fileName)
{
    return helper.Content(string.Format("{0}/{1}", ScriptDir, fileName));
}
Run Code Online (Sandbox Code Playgroud)

在我的母版页面中,我只需将jQuery脚本添加到我的页面中,如下所示:

<script type="text/javascript" src="<%= Url.Script("jquery-1.3.2.min.js") %>"></script>
Run Code Online (Sandbox Code Playgroud)

我如何让intellisense为jQuery工作,因为Visual Studio在设计时并不知道jquery-1.3.2.min.js包含在Master页面中?

我目前在我的母版页中包含以下代码(硬编码我的-vsdoc脚本位置)的解决方法.这可能是目前最好的解决方案:

<% if (false) { %> <script type="text/javascript" src="~/Assets/Scripts/jquery-1.3.2-vsdoc.js"></script> <% } %>
Run Code Online (Sandbox Code Playgroud)

Ste*_*ons 9

您不必包含文件名的"-vsdoc"部分.vsdoc intellisense文件将自动被选中.但是,这个基本的解决方法是我能够使用jquery和脚本路径的方法获得intellisense的唯一方法.我还必须将解决方法标记放在任何不引用我想要智能感知的母版页的.ascx控件或视图中.

我使用的解决方法,与你的相同,减去"-vsdoc":

<% if (false) { %>
    <script src="../../Content/scripts/jquery-1.3.2.js" type="text/javascript"></script> 
<% } %>
Run Code Online (Sandbox Code Playgroud)

但是,由于必须对路径进行硬编码,因此解决方法无法使用路径方法.答案不多 - 只是对同一问题的确认.


如果为视图启用编译,则上述代码将导致无法访问的代码警告.此代码使用指令不会导致警告,也不会编译到视图中:

<% #if (false) %>
    <script src="../../Content/scripts/jquery-1.3.2.js" type="text/javascript"></script> 
<% #endif %>
Run Code Online (Sandbox Code Playgroud)