首页 > 解决方案 > 如何修改母版页以修复 asp.net 中的 Bootstrap4 下拉菜单?(未捕获的 TypeError:Bootstrap 下拉菜单需要 Popper.js)

问题描述

亲爱的,我在更新到 bootstrap 4 后尝试在我的项目中使用下拉菜单,它在更新之前工作但在更新之后没有工作,无论如何问题发生在 js 中,当我试图单击下拉按钮时出现以下错误。

Uncaught TypeError: Bootstrap dropdown require Popper.js (https://popper.js.org)
    at Dropdown.toggle (bootstrap.js:1533)
    at HTMLButtonElement.<anonymous> (bootstrap.js:1690)
    at Function.each (jquery-3.0.0.js:359)
    at jQuery.fn.init.each (jquery-3.0.0.js:152)
    at jQuery.fn.init._jQueryInterface [as dropdown] (bootstrap.js:1675)
    at HTMLButtonElement.<anonymous> (bootstrap.js:1842)
    at HTMLDocument.dispatch (jquery-3.0.0.js:5087)
    at HTMLDocument.elemData.handle (jquery-3.0.0.js:4895)

我进行了很多搜索以解决此问题,并尝试将来自 umd 的 popper.js 和直接从链接包含到母版页或同一页面中,但它不起作用

我也试图改变 cssClass 但什么也没发生。

这是我的母版页(Visual Studio 添加的默认值)

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

    <asp:PlaceHolder runat="server">
        <%: Scripts.Render("~/bundles/modernizr") %>
    </asp:PlaceHolder>
    <webopt:BundleReference runat="server" Path="~/Content/css" />
    <link href="Content/fontawesome-all.css" rel="stylesheet" />
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />

    <style type="text/css">
        .auto-style1 {
            font-size: small;
            color: #999999;
        }
    </style>


</head>
<body>
    <form runat="server">
        <asp:ScriptManager runat="server" EnablePageMethods="true" EnableCdn="True">
            <Scripts>
                <%--To learn more about bundling scripts in ScriptManager see https://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 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>

第一次尝试:

    <div class="btn-group" role="group">
        <button id="btnGroupDrop1" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Action <span class="caret"></span></button>
        <ul class="dropdown-menu" aria-labelledby="btnGroupDrop1">
            <li>
                <asp:LinkButton ID="LinkButton2" runat="server">Solve</asp:LinkButton></li>
            <li>
                <asp:LinkButton ID="LinkButton3" runat="server">Abort</asp:LinkButton></li>
        </ul>
    </div>

第二次尝试

           <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">
                Action<span class="caret"></span>
            </button>
            <ul class="dropdown-menu">
                <li><a href="#">Solve</a></li>
                <li><a href="#">Abort</a></li>
            </ul>
        </div>

标签: javascriptasp.netwebformsbootstrap-4popper.js

解决方案


我找到了解决方案:

首先在 Visual Studio 中转到 “已安装Tools > NuGet Package Manager > Manage NuGet Packages for Solution” 选项卡,然后在卸载 后卸载AspNet.ScriptManager.bootstrabBootstrap

下一步:在 Site.Master 中的 ScriptManager标签中删除该行<asp:ScriptReference Name="bootstrap" />

并将以下链接添加到母版页的head 标记

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

推荐阅读