jQuery库位置希望在服务器上以不同方式引用

gfr*_*zle 4 model-view-controller asp.net-mvc jquery jquery-ui

我有一个使用jQuery的ASP.NET MVC应用程序.要加载js库,我会像这样引用它们:

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

这在本地工作正常,但是当我将它发布到服务器时,它找不到库.要使它工作,我必须将其更改为:

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

进行此更改允许它在本地和服务器上工作,但它会向我发出警告,指出找不到该文件.所以我有几个问题:

  1. 如果我没有引用正确的库位置,代码如何在本地工作?
  2. 我可以为脚本路径提供什么,它可以在任何地方工作而不会发出警告?

我知道#2的答案是将库存储在一些已知的绝对路径中,但我还没有准备好承诺.

tva*_*son 6

试试这个:

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

这将使应用程序根目录的路径相对化,无论它是在顶级还是在虚拟目录中.我实际上开发了一个HtmlHelper扩展,可以清除它:

<%= Html.Javascript( Url.Content( "~/Scripts/jquery-1.3.2.min.js" )) %>
Run Code Online (Sandbox Code Playgroud)

添加以下内容以获取intellisense.这需要相对路径才能工作,但在运行时被排除,因为条件(总是)失败.

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