ASP.Net Core Web App(Bootstrap)导航栏添加下拉菜单点击无响应如何解决
Bootstrap下拉菜单无法展开问题排查与解决方案
核心原因是你参考Bootstrap 5文档编写的属性,与ASP.NET Core Web App模板默认内置的Bootstrap 4版本不兼容,可按以下步骤排查修复:
- 确认项目当前Bootstrap版本
打开wwwroot/lib/bootstrap目录查看版本号,或找到布局页(一般是Pages/Shared/_Layout.cshtml)中引入的Bootstrap资源路径,确认版本。 - 统一属性命名规则
- 若保留默认Bootstrap 4版本:将下拉菜单触发按钮的
data-bs-toggle="dropdown"修改为data-toggle="dropdown",所有Bootstrap交互属性均删除bs前缀即可。 - 若升级到Bootstrap 5版本:替换项目中Bootstrap 4资源为Bootstrap 5的正式资源,推荐引入
bootstrap.bundle.min.js(已内置Popper依赖,无需单独引入),同时将原有Bootstrap 4属性调整为带bs前缀的格式,比如导航折叠按钮的data-toggle改为data-bs-toggle、data-target改为data-bs-target。
- 若保留默认Bootstrap 4版本:将下拉菜单触发按钮的
- 检查资源引入正确性
确认布局页中JS资源引入顺序符合要求:Bootstrap 4需按「jQuery → Popper.js → bootstrap.js」顺序引入;Bootstrap 5仅需引入bootstrap.bundle.min.js即可。 - 强制刷新验证效果
修改完成后按Ctrl+F5强制刷新浏览器,避免缓存旧资源导致问题复现。
以下是适配Bootstrap 5的header代码示例:
<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">WebApplication1</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 flex-sm-row-reverse"> <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="/Privacy">Privacy</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdown"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> </div> </div> </nav> </header>
内容的提问来源于stack exchange,提问作者Daniel Barnes
相关产品推荐
相关产品推荐

