【问题标题】:Why does ~/ not work inside script references?为什么 ~/ 在脚本引用中不起作用?
【发布时间】:2013-05-23 11:24:45
【问题描述】:

我正在为我的 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 会起作用吗?

【问题讨论】:

  • 这是 WebForms 还是 MVC?
  • 如果您在使用~ 的所有元素上没有缺少runat=server 的网络表单?
  • 对不起,我忘了提。我在使用 WebForms!
  • @MartinSmith:Afaik,你不能将runat="server" 添加到script 标签,不是吗?!
  • 我想这可能会有所帮助stackoverflow.com/a/16209096/1236044

标签: javascript jquery asp.net webforms


【解决方案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>

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

【讨论】:

  • 感谢您的努力!但是,我仍然希望得到一个答案,该答案描述 为什么 ~/ 不适用于 script 资源,但适用于 links。
  • 我认为这与 .NET 呈现
猜你喜欢
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 2016-05-17
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
相关资源
最近更新 更多