我正在尝试将 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(),但得到了相同的结果。
最佳答案
您可以使用:
<script type="text/javascript" src="<%= ResolveUrl("~/jquery/jquery-1.4.2.min.js")%>"></script>
或者可能构建一个控件,本质上为您进行重新映射:
<my:Script src="~/jquery/jquery-1.4.2.min.js" />
甚至可以将其注册到 ClientScriptManager,但最好将其放在页面中。
关于asp.net - ASP.NET 中的 JQuery 与母版页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4330380/