我已经实施了Kazi Manzur在他的MVC最佳实践指南中提出的Url Helper扩展here
我的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));
}
在我的母版页面中,我只需将jQuery脚本添加到我的页面中,如下所示:
<script type="text/javascript" src="<%= Url.Script("jquery-1.3.2.min.js") %>"></script>
我是如何让智能感知器为jQuery工作的,因为Visual Studio在设计时并不知道主页面中包含了jquery-1.3.2.min.js?
我目前在我的母版页中包含以下代码(硬编码my -vsdoc脚本位置)的解决方法。这可能是目前最好的解决方案:
<% if (false) { %> <script type="text/javascript" src="~/Assets/Scripts/jquery-1.3.2-vsdoc.js"></script> <% } %>
答案 0 :(得分:9)
您不必包含文件名的“-vsdoc”部分。 vsdoc intellisense文件将自动被选中。但是,这个基本的解决方法是我能够使用jquery和脚本路径的方法获得intellisense的唯一方法。我还必须将解决方法标记放在任何不引用我想要智能感知的母版页的.ascx控件或视图中。
我使用的解决方法与您的相同,减去“-vsdoc”:
<% if (false) { %>
<script src="../../Content/scripts/jquery-1.3.2.js" type="text/javascript"></script>
<% } %>
但是,由于必须对路径进行硬编码,因此解决方法无法使用路径方法。答案不多 - 只是对同一问题的确认。
如果您enable compiling for views,上述代码将导致无法访问的代码警告。此代码使用指令不会引发警告,也不会编译到视图中:
<% #if (false) %>
<script src="../../Content/scripts/jquery-1.3.2.js" type="text/javascript"></script>
<% #endif %>
答案 1 :(得分:3)
简单:
/// <reference path="jquery-1.3.2-vsdoc.js" />
或者无论名称是什么。
作为额外的奖励,您可能希望使用以下内容作为VS Intellisense与Javascript的参考。
答案 2 :(得分:1)
他建议将这些URL映射到辅助方法以避免重复。但是,对于母版页,您已经拥有了生存信息的中心位置(即您不会重复自己)。
因此,在这种情况下,我建议在这种情况下,这不仅是不必要的,而且是积极有害的。在这种情况下,智能感知要比盲目地100%一致更为重要。