ASP.Net 母版页和文件路径问题
-
22-08-2019 - |
题
我正在尝试在我的母版页中添加对 jQuery 的脚本引用,以便它适用于任何页面。目前看起来像这样
<script type="text/javascript" src="jquery.js"></script>
问题是路径始终相对于执行的 aspx 页面,因此仅当“jquery.js”文件位于同一文件夹中时才有效。为了使其工作,我必须将该行更改为:
<script type="text/javascript" src="../../jquery.js"></script>
这显然不太理想,因为它只适用于距离根文件夹两层深的页面。如果我尝试以下操作,IIS 会抛出有关意外字符的错误。
<script runat="server" type="text/javascript" src="~/jquery.js"></script>
有任何想法吗?
编辑: 我还忘了提到脚本必须位于 head 标签中
目前的最佳答案是“ASP.NET Ajax 客户端框架无法加载。“将其添加到我的母版页时出错。它是从 javascript 而不是 .Net 编译器抛出的。如果我将 ScriptManager 移动到应该在的 head 部分,我会收到有关 ScriptManager 需要位于表单标记内的编译错误。
第三个答案抛出“路径中存在非法字符。" 编译器的异常
编辑2: 当我将该行添加到我的 head 标记时,我从 IIS 收到此错误。
无法修改 Controls 集合,因为该控件包含代码块(即<%...%>)
解决了: 我从下面的答案中获取了编辑后的回复并将其放入 asp:内容占位符 元素
解决方案
您可以使用 ScriptManager
:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/jquery.js" />
</Scripts>
</asp:ScriptManager>
编辑:如果您的绝对的需要这在<head>
部分,你可以这样做:
<head>
<script type="text/javascript"
src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>
修改2:强>据评论,如果观察到
Controls集合不能被修改,因为该控件包含代码块(即<%...%>)
您可能需要改变以上使用数据绑定语法:
<head>
<script type="text/javascript"
src="<%# Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>
其他提示
尝试下头部区段<%#
代替<%=
在Master页面
<script type="text/javascript"
src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>">
</script>
然后,在编码后面下Page_Load
事件Master页面的
Page.Header.DataBind();
现在你是好去与任何的jQuery和JavaScript以及CSS只是您需要更改要处理哪个文件ResolveUrl
你的路径CSS,JavaScript的,jQuery的。
如果你不打算给我们的asp:ScriptManager的或绝对路径,那么你可以做这样的:
<script runat="server" type="text/javascript"
src='<%= Page.ResolveUrl("~/jquery.js") %>'></script>
我不知道是否你们找到了解决您的问题,或者没有。我是面临相同的问题和要发疯了图找出我为什么得到",这是未定义的"错误的插件使用。我尝试了所有的解决方案我从互联网,但未成功。
但是,突然的东西泼在我的脑海里,可能是脚本文件应在序。因此,我搬s referece先位置,一切都开始像魅力。
记住,伙计们,如果你正在使用的任何插件有文化的地方使用以下顺序的设置参考这些框就会自动.
- 参考s库
- 参照其他随后的插图书馆等。
例如:
- "脚本src="js/jquery-1.3.2.min.js"type="text/javascript"...
- "脚本src="js/jqDnR.min.js"type="text/javascript"...
- "脚本src="js/jquery.jqpopup.min.js"type="text/javascript"...
- "脚本src="js/jquery.bgiframe.min.js"type="text/javascript"...
始终确保你必须把s参考和随后的图书馆。
希望这可以解决你的问题,尤其是当使用与MasterPages.它非常奇怪的是,它的工作,无论什么命令你用时不要使用MasterPages但是当你这样做,那么它在某种程度上requres正确的顺序。
运气好,幸福的编码,
文森D'Souza
看着 如何运行根“/”. 。这应该可以解决您所有未解决的问题 .js
文件路径。您基本上重新配置 VS Dev 服务器来运行您的应用程序 localhost:port/
与常规的相反 localhost:port/application name/
使名称解析的工作方式与 IIS 上的工作方式相同。
<script type="text/javascript" src="/full/path/to/jquery.js"></script>
如果这个脚本,标记可直接浏览器,那么你不可能替代你的网站根存在。至少不在服务器上。所以你可以:
- 部署网站的根域 名称和使用的绝对路径 (最简单的解决方案)。
- 插入这样的 链接服务器的控制。
- 预处理导致HTML之前 把它发送给客户(用 HttpResponse.过滤器)。
您也可以使用<基地> HTML标记:
<base href="http://www.domain.com"></base>
和然后在标题部分的所有链接是相对于基本地址:
<script type="text/javascript" src="scripts/jquery.js"></script>
当你有多个发布目的地,如本地开发Web服务器,演示服务器等,你只需更换该基地URL常常是有用的。
<body>
<script language="javascript" src='<%= this.ResolveClientUrl("~/full/path/to/jquery.js") %>' type="text/javascript"></script>
</body>
有关任何页使用的文件的绝对路径它如下所示:
<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>