ASP.NET Core局部视图中Bootstrap Modal触发Illegal invocation错误求助
问题分析与解决方法
核心问题:Bootstrap Modal结构不完整
你遇到的Illegal invocation错误,本质是局部视图里的Modal缺少Bootstrap要求的标准DOM结构,导致Bootstrap JS无法正确识别和初始化弹窗组件。
具体修复步骤
1. 修正局部视图JobPreview.cshtml的Modal结构
Bootstrap Modal必须包含.modal-dialog和.modal-content两层核心嵌套结构,否则JS无法正常工作。修改后的代码如下:
@model BusinessLogicCommon.RequestModel._JobPreview <div id="j@Model.Id" class="job-preview modal modal-right fade" tabindex="-1" role="dialog" aria-hidden="true"> <!-- 必须添加的.modal-dialog容器 --> <div class="modal-dialog"> <!-- 必须添加的.modal-content容器 --> <div class="modal-content"> <!-- 可选的头部(带关闭按钮) --> <div class="modal-header"> <h5 class="modal-title">@Model.JobTitle</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <!-- 内容主体 --> <div class="modal-body"> <div class="d-flex align-items-start"> <div class="container-icon dark-icon mt-3"> <i data-feather="briefcase"></i> </div> <div style="margin-left: 30px;"> <p class="text-fade"> @(Model.RecruitmentType != null ? Model.RecruitmentType : "Type unspecified"), @(Model.Experience != null ? Model.Experience + " experience" : "Experience unspecified") </p> </div> </div> </div> </div> </div> </div>
2. 简化主视图里的Modal选择器语法
把原代码里的转义符写法@("#j"+job.Id)改成更简洁的Razor字符串拼接,避免潜在的转义错误:
<a href="#" class="prev-job" data-id="@job.Id" data-bs-toggle="modal" data-bs-target="#j@job.Id"> <h2 class="mt-0">@job.Name</h2> </a>
3. 检查Bootstrap依赖是否完整
确保页面正确引入了Bootstrap 5的JS和依赖的Popper.js(Bootstrap 5弹窗必须依赖Popper):
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.min.js"></script>
如果使用的是打包后的vendors.min.js,要确认其中包含了兼容版本的Popper和Bootstrap JS。
内容的提问来源于stack exchange,提问作者za_ali33
相关产品推荐
相关产品推荐

