我有一个网站,我试图在我的母版页中实现基于jQuery UI的MessageBox。内容页面根据商业区文件夹排列,即'〜/ Branding / Contracts.aspx'。我发现当我加载这样的内容页面时,jQuery(在主页面中引用如下)不会加载。我认为这是因为浏览器正在请求'Branding / Scripts / jQuery'。我该怎么办?我没有简单的'script'标签中的'root'操作符。
<script src="/Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script src="Scripts/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>
答案 0 :(得分:10)
在MasterPage
<script src="<%= ResolveUrl("~/Scripts/jquery-1.3.2.js") %>" type="text/javascript"></script>
如果您有任何进一步的麻烦,请告诉我。
答案 1 :(得分:1)
一个选项是将您对jQuery的调用“外包”到Googles AJAX libraries之类的内容。这将为您的客户提供额外的优势,可能需要使用缓存版本的jQuery。
我使用http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js
如果你有其他自定义脚本,这对你不会有帮助。为此,我在母版页的页面加载事件中使用以下内容来加载我的常用sciprts。
HtmlGenericControl myJs = new HtmlGenericControl();
myJs.TagName = "script"; myJs.Attributes.Add("type", "text/javascript");
myJs.Attributes.Add("language", "javascript"); //don't need it usually but for cross browser.
myJs.Attributes.Add("src", ResolveUrl("~/scripts/jquery-ui-1.7.2.custom.min.js"));
this.Page.Header.Controls.Add(myJs);
通常设置为带有paremter的函数,用于脚本路径,以便更轻松地加载多个js文件。
Ode To Code有一篇关于母版页的幻想文章和这类事情:
答案 2 :(得分:0)
我知道这是旧的,但有人可能会像我一样遇到它。无论如何,您可以使用ASP ScriptManager对象注册这些脚本。
<asp:ScriptManager ID="ScriptManager" runat="server">
<Scripts>
<asp:ScriptReference Path="Scripts/jquery-1.8.3.js" />
<asp:ScriptReference Path="Scripts/bootstrap.js" />
<asp:ScriptReference Path="Scripts/general.js" />
</Scripts>
</asp:ScriptManager>
这样可以在不使用Page.ResolveUrl的情况下继续加载脚本。我想是一个偏好。