为什么〜/不在脚本引用中工作?

时间:2013-05-28 13:08:11

标签: javascript jquery asp.net webforms

我正在为我的ASP.NET项目使用jQuery。我刚刚意识到,只有导航深度不那么深,它才有效。例如

  • http://localhost/myapp/index/正常工作
  • http://localhost/myapp/index/sites/sub/不起作用

我遇到的错误是由jQuery引起的。 Firebug告诉我,

  

$未定义。

经过一些研究,我改变了我的元定义:

<link rel="Stylesheet" type="text/css" href="~/Css/style.css" />
<script src="~/Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.uniform.min.js" type="text/javascript"></script>

但是,它没有用。在我查看服务器响应后,CSS链接的href被正确替换:

<link rel="Stylesheet" type="text/css" href="../../Css/style.css" />

但是,对于我的脚本资源,相对路径尚未被替换:

<script src="~/Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.uniform.min.js" type="text/javascript"></script>

我期待类似../../Scripts/jquery-1.7.2.min.js的内容。

这是想要的行为吗?我应该如何正确设置脚本资源的应用程序根参考?当我在IIS中作为Web应用程序托管我的网站时,写/Scripts/jquery-1.7.2.min.js是否有效?

1 个答案:

答案 0 :(得分:1)

请尝试Page.ResolveUrl()链接到您的资源:

<link rel="Stylesheet" type="text/css" href="<%=Page.ResolveUrl("~/Css/style.css")%>" />
<script src="<%=Page.ResolveUrl("~/Scripts/jquery-1.7.2.min.js")%>" type="text/javascript"></script>
<script src="<%=Page.ResolveUrl("~/Scripts/jquery.uniform.min.js")%>" type="text/javascript"></script>

这将解析为您网站的父目录,无论它是作为应用程序的根目录托管,还是作为虚拟目录托管。