.NET 5 MVC使用Bootstrap5.1打开模态框时@Url.Action始终跳转Index问题
问题根源与修复方案
1. 核心故障原因(路由到Index的直接原因)
你在JavaScript中读取自定义data属性的写法错误:
按钮上定义的属性是data-bs-url,jQuery的data()方法会自动将横杠分隔的属性名转换为驼峰格式,当前代码$(this).data('url')无法读取到目标地址,导致url变量为undefined,$.get方法会默认请求当前页面(也就是Index页)的地址,因此返回的是完整Index页面内容。
修复代码(修改site.js中的取值逻辑):
// 原来的错误写法 // var url = $(this).data('url'); // 修改为正确写法 var url = $(this).data('bsUrl');
2. 其他Bootstrap 5兼容问题修复
你使用的是Bootstrap 5版本,部分Bootstrap 4的旧写法需要适配:
- 局部视图
_CreatePartial.cshtml中的关闭按钮属性data-dismiss="modal"需要改为data-bs-dismiss="modal",否则点击关闭按钮无响应 - site.js中隐藏模态框的代码
modal('.hide')多了冗余的点符号,修改为modal('hide')
3. 路由稳定性优化
局部视图中的表单action属性不要写死相对路径Create,改为@Url.Action("Create","Employees")生成绝对路径,避免部署在子目录、路由规则调整时出现匹配错误。
4. 可选检查项
如果修改后仍有问题,请逐一确认:
- 控制器类名是否为
EmployeesController,拼写正确且继承自Controller基类 - Startup.cs(.NET 5)中的默认路由规则优先级最高,没有自定义路由提前拦截了
/Employees/Create的GET请求
内容的提问来源于stack exchange,提问作者scetu
相关产品推荐
相关产品推荐

