You need to enable JavaScript to run this app. ASP.NET Core MVC项目删除操作路由异常返回405错误问题求助
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC项目删除操作路由异常返回405错误问题求助

问题根因
  • 表单提交路径配置错误:Delete.cshtml里的form标签硬写了相对路径action="DeletePost",你当前打开的删除确认页面路径是/Expense/Delete/1,浏览器会把相对路径拼在当前访问路径的末尾,最终提交地址变成/Expense/Delete/DeletePost,和你预期的路径不符。
  • 405错误的来源:错误的提交路径命中了控制器中标记[HttpGet]的Delete动作,POST请求访问仅支持GET的接口,自然返回405方法不允许的错误。
  • 关于Id提交的补充:你表单内已经添加了asp-for="Id"的隐藏字段,就算路由路径里不带Id,提交后框架也会自动把隐藏字段的值绑定到DeletePost方法的id参数,不影响删除逻辑执行,不需要强制把Id放到路由路径中。
解决方法

优先使用标签助手自动生成路径,避免硬编码带来的维护问题:

  1. 基础修复(满足功能要求):将Delete.cshtml中的form标签替换为如下代码,标签助手会自动生成指向当前控制器下DeletePost动作的正确路径:
<form method="post" asp-action="DeletePost">
  1. 满足路径格式要求(提交路径为/Expense/DeletePost/1):如果需要符合你预期的路由带Id的格式,可以在form标签上增加路由参数配置:
<form method="post" asp-action="DeletePost" asp-route-id="@Model.Id">
  1. 不推荐的硬编码方案:直接写绝对路径的action,后续修改控制器或动作名时需要同步修改:
<form method="post" action="/Expense/DeletePost">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 13:30:03