我正在为我的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
是否有效?
答案 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>
这将解析为您网站的父目录,无论它是作为应用程序的根目录托管,还是作为虚拟目录托管。