我们在主页中包含javascript时遇到了一些麻烦。 “〜/”根快捷方式似乎不起作用,因此我们必须手动输入将使用它的javascript路径,例如:“../../tooltip.js”
然而,问题是如果嵌套页面位于不同的路径中,这种方法不起作用,因为尽管嵌套页面位于不同的位置,路径保持不变 - 任何有关如何使路径自动运行的解决方案就像它对css文件一样吗?
谢谢!
答案 0 :(得分:7)
~/
是ASP.NET中的一个特殊实体,代表“应用程序根目录”。只有在通过ASP.NET服务器控件(例如<asp:Image runat="server" ImageUrl="~/path..." />
)传递该URL时才会进行转换。试图将它作为文本文本直接传递给客户端的东西,例如`将在浏览器中完全呈现。
有一些解决方案:
将您的脚本放在相对于域根目录的可预测位置,例如domain.com/scripts/script.js
,您可以将其称为/scripts/script.js
。前面的/
告诉客户端(浏览器)它是域根的绝对路径。
使用Page.ResolveClientUrl呈现正确的路径(<%=Page.ResolveClientUrl("~/script./js")%>
)
创建自己的服务器控件,处理~/
分辨率。
将脚本嵌入assembly resource。
答案 1 :(得分:5)
Cory Larson recommends:
<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/tooltip.js") %>"></script>
答案 2 :(得分:0)
尝试
<script type="text/javascript" src=<%=Request.ApplicationPath+"/Scripts/Script_Name"%>></script>
我一直在使用网址重写,并且“〜”偶尔会对网址中的特殊字符进行窒息,即使它们已被编码。
答案 3 :(得分:0)
如果脚本标签位于HEAD元素中,只需使用相对于母版页的路径,asp.net将自动为您修复参考。只需确保HEAD元素具有runat =“server”属性。
这对CSS文件也很有效。这是我能够让他们在VS.NET设计器中解决的唯一方法。
以下是我项目的示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="../styles/reset.css" />
<link rel="stylesheet" type="text/css" href="../styles/960.css" />
<link rel="stylesheet" type="text/css" href="../styles/default.css" />
<link rel="stylesheet" type="text/css" href="../styles/buttons.css" />
<script type="text/javascript" src="../jQuery/jquery-1.3.2.js"></script>
</head>
答案 4 :(得分:0)
链接样式表可以放在标题中(使用runat =“server”)并使用〜来解析根目录。但是,Javascript文件不能以这种方式引用。添加脚本的另一种方法是使用正文中的脚本管理器。
<html>
<head runat="server">
<title>title</title>
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form runat="server">
<asp:ScriptManager ID="ScriptManager" runat="server" EnablePageMethods="true">
<Scripts>
<asp:ScriptReference Path="~/Scripts/jquery-1.4.2.js" />
<asp:ScriptReference Path="~/Scripts/jquery-ui-1.8.custom.min.js" />
</Scripts>
</asp:ScriptManager>
</body>
</html>
答案 5 :(得分:0)
回答@ [包括Javascript和CSS] [1] http://www.codeproject.com/Articles/404942/Include-JavaScript-and-CSS-on-your-MasterPage
对于CSS文件:
<link href="<%# ResolveUrl("~/") %>css/custom-theme/jquery-ui-1.8.21.custom.css" rel="stylesheet" type="text/css" />
对于JavaScripts:
<script src="<%# ResolveUrl("~/") %>Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
答案 6 :(得分:-1)
你能用“〜/”解释你的意思吗?它应该是你正在寻找的。您可能会检查 head 标记是否具有 runat =“server”属性,因为这可能会阻止“〜/”工作。