Bootstrap dropdown-toggle无法展开问题求助
ASP.NET Core中Bootstrap下拉菜单无法展开的解决方案
问题根源
- Bootstrap版本属性不匹配:页面导航栏折叠按钮使用的是Bootstrap 5的
data-bs-toggle属性,而下拉按钮仍用旧版的data-toggle,Bootstrap 5已将所有原生交互的data属性前缀统一为data-bs-,旧前缀无法触发下拉逻辑。 - HTML结构错误:下拉按钮的
<a>标签被重复闭合,破坏了DOM结构,导致交互逻辑失效。 - 冗余元素:Bootstrap 5的
dropdown-toggle类已自带下拉箭头样式,无需额外添加<span class="caret"></span>元素。
修复后的下拉菜单代码
<li class="nav-item dropdown"> <a class="nav-link text-dark dropdown-toggle" data-bs-toggle="dropdown" role="button" aria-expanded="false" asp-area="">Json</a> <ul class="dropdown-menu"> <li><a class="dropdown-item text-dark" asp-area="" asp-page="LoadJson">Load Json</a></li> <li><a class="dropdown-item text-dark" asp-area="" asp-page="BulkLoadJson">Bulk Load Json</a></li> </ul> </li>
完整修复后的页面代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>@ViewData["Title"] - DataMagnifierAdmin</title> <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" /> <link rel="stylesheet" href="~/DataMagnifier_Admin.styles.css" asp-append-version="true" /> </head> <body> <header> <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3"> <div class="container"> <a class="navbar-brand" asp-area="" asp-page="/Index">DataMagnifierAdmin</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between"> <ul class="navbar-nav flex-grow-1"> <li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a> </li> <li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-page="ExecETL">Execute ETL</a> </li> <li class="nav-item dropdown"> <a class="nav-link text-dark dropdown-toggle" data-bs-toggle="dropdown" role="button" aria-expanded="false" asp-area="">Json</a> <ul class="dropdown-menu"> <li><a class="dropdown-item text-dark" asp-area="" asp-page="LoadJson">Load Json</a></li> <li><a class="dropdown-item text-dark" asp-area="" asp-page="BulkLoadJson">Bulk Load Json</a></li> </ul> </li> <li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a> </li> </ul> <partial name="_LoginPartial" /> </div> </div> </nav> </header> <div class="container"> <main role="main" class="pb-3"> @RenderBody() </main> </div> <footer class="border-top footer text-muted"> <div class="container"> © 2022 - DataMagnifier_Admin - <a asp-area="" asp-page="/Privacy">Privacy</a> </div> </footer> <script src="~/lib/jquery/dist/jquery.min.js"></script> <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="~/js/site.js" asp-append-version="true"></script> @await RenderSectionAsync("Scripts", required: false) </body> </html>
额外说明
- 下拉菜单内的链接改用
dropdown-item类,这是Bootstrap 5的标准样式类,能更好适配下拉菜单的布局和交互,避免使用nav-link可能导致的样式冲突。 - 确认
bootstrap.bundle.min.js已正确引入,该文件包含下拉功能依赖的Popper.js,无需单独引入Popper。
内容的提问来源于stack exchange,提问作者brad
相关产品推荐
相关产品推荐

