我有一个使用jQuery的ASP.NET MVC应用程序。要加载js库,我会像这样引用它们:
<script type="text/javascript" src="../../Scripts/jquery-1.3.2.min.js"></script>
这在本地工作正常,但是当我将其发布到服务器时,它找不到库。为了使它工作,我必须改为:
<script type="text/javascript" src="../Scripts/jquery-1.3.2.min.js"></script>
进行此更改允许它在本地和服务器上工作,但它会向我发出警告,指出找不到该文件。所以我有几个问题:
我知道#2的答案是将库存储在一些已知的绝对路径中,但我还没有准备好承诺。
答案 0 :(得分:6)
试试这个:
<script type="text/javascript" src='<%= Url.Content("~/Scripts/jquery-1.3.2.min.js") %>'></script>
这将使应用程序根目录的路径相对化,无论它位于顶层还是位于虚拟目录中。我实际上开发了一个HtmlHelper扩展,可以将其清理为:
<%= Html.Javascript( Url.Content( "~/Scripts/jquery-1.3.2.min.js" )) %>
添加以下内容以获取intellisense。这需要相对路径才能工作,但在运行时被排除,因为条件(总是)失败。
<% if (false) { %>
<script type="text/javascript" src="../../Scripts/jquery-1.3.2.vsdoc.js"></script>
<% } %>
答案 1 :(得分:1)
您的代码在本地工作的原因是因为您的本地目录结构与生产目录结构不同。
话虽如此,我相信任何外部资源(javascript,图片和样式表)的绝对路径都是最好的。
答案 2 :(得分:1)
正如安德鲁所说,你的目录结构完全不同。您是否考虑过使用google's load库从壁橱位置向用户加载Jquery?
答案 3 :(得分:1)
您是否尝试过引用根网址中的文件?即而不是“../../”,它必须爬上一个directoy,使用“/Content/Scripts/jquery-1.3.2.min.js”。这将是您的目录结构的不可知。
你还应该考虑使用谷歌加载jquery:
http://code.google.com/apis/ajaxlibs/
你的加载时间会更好。
麦克