报表笔记:为什么模态框取消时还405?

发布时间:2026/7/18 23:01:11
报表笔记:为什么模态框取消时还405? 问题模态框“取消”按钮点击后触发表单提交导致 405咏方舟-长流支流 2026-07-18正常情况下在表格中选择一条记录编辑弹出模拟的模态对话框加载数据如图但是当点取消按钮时发现出现了405说明网页触发了一个请求可按F12去看。在移植报表的时候又碰到这个问题因为我封装了以后其实是前端、后端再也一行代码也不用写的结果又一不小心踩坑了。现象点击模态框中的“取消”按钮页面出现 405 错误或页面刷新/跳转。原因HTML 规范中button元素如果没有指定type属性默认是typesubmit。当按钮位于form标签内部时点击会触发表单提交导致页面刷新或 405。解决方案给所有“取消”类按钮显式添加typebuttonbuttontypebuttononclickcloseModal()取消/buttontypebutton表示这是一个普通按钮不会触发表单提交。涉及范围模态框的“取消”按钮模态框的“关闭”按钮任何在form内部但不想触发表单提交的按钮经验总结表单内的按钮如果意图不是“提交”一定要加typebutton。这个坑在模态框里尤其常见因为模态框经常放在表单内部而取消/关闭按钮的初衷只是关闭弹窗不该提交数据。不加type属性就会触发提交导致页面刷新或 405。submit它触发了一个标准的 POST 请求。具体机制如下请求方向浏览器默认将表单数据提交到当前页面的 URL即https://localhost:7222/NormViewGrid?controllerproducts。请求内容这是一个Content-Type: application/x-www-form-urlencoded的 POST 请求会携带表单中所有输入框的值。为什么是 405NormViewGrid控制器设计为渲染页面视图只配置了[HttpGet]用于打开页面服务器没有配置响应 POST 请求的处理方法。当收到 POST 请求时服务器返回“方法不允许”的错误。所以它既不是“不存在的路由”404也不是“跨域问题”CORS而是一个路由存在但方法不匹配的典型场景。通过添加typebutton按钮不再承担“提交”角色从而规避了浏览器自动发起的这个 POST 请求。