ASP.NET MVC Core 3.1 [HttpPost]接口跳转返回HTTP ERROR 405问题求助
问题原因
HTTP 405错误代表请求方法不被允许,你的问题根因是前后端请求方法不匹配:
- 前端生成的
<form>没有指定method属性,浏览器默认会用GET方法提交请求 - 后端
UserManagement接口加了[HttpPost]注解,仅接收POST类型的请求,二者不匹配所以触发405错误
解决方案(二选一即可)
方案1:修改前端表单使用POST提交
给动态生成的form标签添加method="post"属性即可,修改后的代码如下:
var link = '@Url.Action("UserManagement", "Home", new { GB = @ViewBag.GB, id = "code" })'; link = link.replace("code", listSuppliers[i].Item2); suppliersTable.row.add([ "<form action='" + link + "' method='post'><button type='submit' class='btn btn-primary'>" + listSuppliers[i].Item3 + " account(s)</button></form>" ]).draw(false);
方案2:修改后端接口允许GET请求
你当前场景只是查询供应商下的用户数据,属于读操作,用GET请求更符合HTTP语义,直接去掉控制器方法上的[HttpPost]注解即可:
public ActionResult UserManagement(string GB, string id) { ... return View(); }
如果想要更规范的接口限定,也可以显式添加[HttpGet]注解。
内容的提问来源于stack exchange,提问作者Hashka
相关产品推荐
相关产品推荐

