[英]How to insert javascript in asp.net master pages [duplicate]
这个问题在这里已有答案:
我们在主页中包含javascript时遇到了一些麻烦。 “〜/”根快捷方式似乎不起作用,因此我们必须手动输入将使用它的javascript路径,例如:“../../tooltip.js”
但问题是,如果嵌套页面位于不同的路径中,这种方法不起作用,因为尽管嵌套页面位于不同的位置,路径保持不变 - 任何有关如何使路径自动运行的解决方案都像对于css文件?
谢谢!
~/
是ASP.NET中的一个特殊实体,代表“应用程序根”。 只有在通过ASP.NET服务器控件传递该URL时才会发生转换,例如<asp:Image runat="server" ImageUrl="~/path..." />
。 试图将它作为文本文本直接传递给客户端的东西,例如`将在浏览器中完全呈现。
有一些解决方案:
将脚本放在相对于域根目录的可预测位置,例如domain.com/scripts/script.js
,您可以将其称为/scripts/script.js
。 前面的/
告诉客户端(浏览器)它是域根的绝对路径。
使用Page.ResolveClientUrl呈现正确的路径( <%=Page.ResolveClientUrl("~/script./js")%>
)
创建自己的服务器控件来处理~/
resolution。
将脚本嵌入为程序集资源 。
Cory Larson 建议 :
<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/tooltip.js") %>"></script>
尝试
<script type="text/javascript" src=<%=Request.ApplicationPath+"/Scripts/Script_Name"%>></script>
我一直在使用url重写,并且“〜”偶尔会对url中的特殊字符进行窒息,即使它们是编码的。
如果脚本标记位于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>
回答@ [包括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>
链接样式表可以放在标题中(使用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>
你能用“〜/”解释你的意思吗? 它应该是你正在寻找的。 您可能会检查您的head标签是否具有runat =“server”属性,因为这可能会阻止“〜/”工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.