You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC刷新详情页出现HTTP ERROR 405错误如何解决?

问题原因

405错误的含义是请求方法不被允许,你的问题触发逻辑如下:

  • 列表页的Details按钮是type="submit"的提交按钮,嵌套在method="post"的表单内,点击按钮时会以POST请求调用后端的Details接口,因此首次打开详情页正常。
  • 刷新详情页时,浏览器默认会对当前地址发起GET请求,若你的后端Details Action仅标记了[HttpPost]特性,不支持GET请求,就会返回405错误。

修复方案(推荐第一种,符合HTTP语义)

方案1:将Details按钮改为GET请求的超链接

详情页属于数据查询展示场景,本身就应该用GET请求,修改列表页的Details按钮代码即可:

<!-- 把原来的button submit按钮替换为a标签 -->
<a asp-action="Details" asp-route-Id="@obj.Id" class="btn btn-primary mx-2">
    <i class="fas fa-list"></i>
</a>

同时修改后端Details Action,移除[HttpPost]特性,可显式添加[HttpGet]特性确保支持GET请求。调整后无论是点击跳转还是刷新页面,都是GET请求,不会出现405错误。

方案2:让Details接口同时支持POST和GET请求

如果特殊场景必须保留POST提交的逻辑,只需给后端Details Action同时添加[HttpPost]和[HttpGet]特性即可,刷新时的GET请求也能被正常处理。

注:详情页内部的post表单是为Download、Delete等提交类操作服务的,和详情页本身的加载逻辑无关,无需调整。

内容的提问来源于stack exchange,提问作者Azhar Qureshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:06:10