javascript - 如何修改母版页以修复 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>
解决方案
我找到了解决方案:
首先在 Visual Studio 中转到
“已安装Tools > NuGet Package Manager > Manage NuGet Packages for Solution
”
选项卡,然后在卸载
后卸载AspNet.ScriptManager.bootstrab
Bootstrap
下一步:在 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>
推荐阅读
- rxjs - 在switchMap中操作时保持状态
- python - 使用python selenium单击类中的span元素
- c++ - 如何引用模板化基类的嵌套类型
- javascript - React 组件不会在第一次状态更新时重新渲染
- sql - 数据库中已经有一个名为“#BaseData”的对象
- excel - 有没有一种方法可以获取和组合数百张 Excel 表格的所有内容、元数据并粘贴到一个中?
- c++ - 用 C++ 设计和实现一个接口:如果我这样做我该死,如果我不这样做我该死
- python - 使用散景小部件中的新值进行交互式 python 绘图
- python - django sessions remember me
- html - 可滚动元素的顶部被隐藏