【发布时间】:2010-12-01 23:57:38
【问题描述】:
我正在尝试将 JQuery 与一些使用母版页的 asp.net 页面一起使用,但在加载 JQuery javascript 文件时遇到问题。
当我在母版页的标记中包含该文件时,它在与母版页位于同一目录中的页面上运行良好:
<script src="jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
但是对于与母版页不在同一目录中的页面会中断。母版页继承了包含它们的页面的路径,因此对于不同的页面,jquery .js 文件的相对路径是不同的。而且,当然,我的主文件中不能有不同的相对路径,因为只有其中一个。
我可以使用绝对路径:
<script src="/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
但如果网站安装为虚拟目录,则会中断。
我的下一个尝试是使用“~”来表示网站的根目录:
<script src="~/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
但是脚本标签不理解~"。
所以我尝试在代码隐藏中执行此操作。从 OnInit(),我尝试了:
string url = "~/jquery/jquery-1.4.2.min.js";
url = this.ResolveUrl(url);
Page.ClientScript.RegisterClientScriptInclude("jquery_js", url);
当 JQuery javascript 运行时,这给了我错误。我在页面的标记中有一些 javascript:
$(document).ready(function()
{
...
}
我得到“$”是未定义的。我在开头的 jquery-1.4.2.min.js 中添加了一个警报,它加载正常,但是在 .aspx 文件中的这段 javascript 执行之后。
我尝试了 ScriptManager.RegisterClientScriptInclude(),但结果相同。
【问题讨论】:
-
上一个示例实际生成的 HTML 是什么?它是否包含在包含您的 $(document).ready 处理程序的脚本标记之后?
-
不。这就是问题所在。 (或者最后一个问题。如果不是母版页,我可以将链接放在脚本之前。从代码隐藏中添加链接并不能让我控制它们的放置位置。
标签: asp.net jquery master-pages