繁体   English   中英

如何在asp.net母版页中插入javascript [复制]

[英]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..." /> 试图将它作为文本文本直接传递给客户端的东西,例如`将在浏览器中完全呈现。

有一些解决方案:

  1. 将脚本放在相对于域根目录的可预测位置,例如domain.com/scripts/script.js ,您可以将其称为/scripts/script.js 前面的/告诉客户端(浏览器)它是域根的绝对路径。

  2. 使用Page.ResolveClientUrl呈现正确的路径( <%=Page.ResolveClientUrl("~/script./js")%>

  3. 创建自己的服务器控件来处理~/ resolution。

  4. 将脚本嵌入为程序集资源

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM