当内容页面位于子文件夹中时,jQuery不会在母版页上加载

时间:2010-04-08 07:18:54

标签: asp.net jquery

我有一个网站,我试图在我的母版页中实现基于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>

3 个答案:

答案 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有一篇关于母版页的幻想文章和这类事情:

http://odetocode.com/Articles/450.aspx

答案 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的情况下继续加载脚本。我想是一个偏好。