Javascript 如何加载需要使用ASP.NET 4.51的jQuery的单个.js文件?

Javascript 如何加载需要使用ASP.NET 4.51的jQuery的单个.js文件?,javascript,jquery,asp.net,bundling-and-minification,Javascript,Jquery,Asp.net,Bundling And Minification,我的网站的正常模式是每个页面的功能都有一个javascript文件。并让母版页加载所需的jQuery和jQuery UI文件 我刚开始在VS2013中使用ASP.NET 4.5。。。而且它内置了强大的捆绑/缩小功能。但是,当我将我的page.js“添加”到page.aspx时。。。它无法运行,因为母版页(包含jquery)中的“捆绑”javascript文件加载在my page.js文件之后 我考虑将所有单独的页面加载到包中,但这需要我映射出所有的表单字段等,因为现在将加载所有单独的javasc

我的网站的正常模式是每个页面的功能都有一个javascript文件。并让母版页加载所需的jQuery和jQuery UI文件

我刚开始在VS2013中使用ASP.NET 4.5。。。而且它内置了强大的捆绑/缩小功能。但是,当我将我的page.js“添加”到page.aspx时。。。它无法运行,因为母版页(包含jquery)中的“捆绑”javascript文件加载在my page.js文件之后

我考虑将所有单独的页面加载到包中,但这需要我映射出所有的表单字段等,因为现在将加载所有单独的javascript文件

我还假设这是非常低效的,因为jquery将尝试将事件绑定到不存在的DOM对象(因为当浏览器位于page3.js时,page.js、page2.js、page4.js等将加载到bundle中)

正确的方法是什么

我的另一个选择是消除捆绑,但我想利用单个js/css文件

想法?

Ans 1)当您的jquery来自bundle或直接链接到母版页时:

您可以使用ContentPlaceHolder在绑定js后呈现page.js。请确保在捆绑行下方添加ContentPlaceHolder

1) 在母版页中

<head runat="server">
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="description" content="" />
    <meta name="author" content="" />
    <title></title>

    <%: System.Web.Optimization.Scripts.Render("~/Bundles/js") %>

    <asp:ContentPlaceHolder ID="cphPageJs" runat="server">
    </asp:ContentPlaceHolder>
</head>

2) 在您的页面中

<asp:Content ID="Content1" ContentPlaceHolderID="cphPageJs" runat="server">
    <script src="/js/myPage.js"></script>
</asp:Content>

Ans 2)当jquery从ScriptManager渲染时:

在这种情况下,您需要在内容页中使用ScriptManagerProxy。确保在内容中使用此控件,并且在母版页中的ScriptManager之后添加ContentPlaceHolder

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    <asp:ScriptManagerProxy ID="smp" runat="server">
        <Scripts>
            <asp:ScriptReference Path="~/js/myTest.js" />
        </Scripts>
    </asp:ScriptManagerProxy>
</asp:Content>

因此,在我的标记底部添加HeadContent部分后,jquery.js文件似乎是从Scriptmanager而不是bundle中呈现的(即使它已在BundleConfig.cs中注册)

请参见下面的Scriptmanager在默认情况下如何放置在标记中。我能把这个移到头上吗?这是默认的asp.net site.master布局垃圾吗?我不敢相信其他人没有遇到这个问题

因此,我的page.js文件现在位于modernizer捆绑包文件下面的headcontent输出中(该文件包含了谁知道的内容,因为很多js文件仍然是从scriptmanager逐行呈现的)。但是Scriptmanager将jquery放在我的headcontent输出下面

<head runat="server">
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Website Title - <%: Page.Title %></title>

    <asp:PlaceHolder runat="server">
        <%: Scripts.Render("~/bundles/modernizr") %>
    </asp:PlaceHolder>
    <webopt:bundlereference runat="server" path="~/Content/css" />
    <asp:ContentPlaceHolder ID="HeadContent" runat="server">
    </asp:ContentPlaceHolder>
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />

</head>
<body>
    <form runat="server">
        <asp:ScriptManager runat="server">
            <Scripts>
                <%--To learn more about bundling scripts in ScriptManager see http://go.microsoft.com/fwlink/?LinkID=301884 --%>
                <%--Framework Scripts--%>
                <asp:ScriptReference Name="MsAjaxBundle" />
                <asp:ScriptReference Name="jquery" />
                <asp:ScriptReference Name="bootstrap" />
                <asp:ScriptReference Name="respond" />
                <asp:ScriptReference Path="~/Scripts/site.js" />
                <asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
                <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
                <asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
                <asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
                <asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
                <asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
                <asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
                <asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
                <asp:ScriptReference Name="WebFormsBundle" />

                <%--Site Scripts--%>
            </Scripts>
        </asp:ScriptManager>

网站名称-

您可以选择捆绑文件的存放位置吗?也许您可以将
bundle.js
包含在
标记的顶部附近,或者包含在
标记中。在以前版本的ASP.NET中,它在site.master页中有一个headcontent部分,但现在只有内容空间。嗨,Jibboo,如果您认为这是答案,请标记。谢谢。我想你忘了附上什么?NiraVyas-查看我的其他评论/答案(作为单独的答案张贴在上面或下面)我更新了上面的答案,我认为Ans 2是你的解决方案。