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

为何我的HTML表单无法提交至ASP.NET Core MVC的POST方法?

表单无法提交至ASP.NET Core MVC POST方法的原因及解决办法

核心原因

你的表单未明确指定POST提交方式,且缺少ASP.NET Core要求的CSRF验证令牌,导致请求无法匹配到带[HttpPost]特性的控制器方法。

具体问题点

  1. 表单默认用GET请求:未设置method属性的<form>标签,默认发送GET请求,会匹配到无[HttpPost]特性的Create()方法,而非你定义的POST版本。
  2. 缺少CSRF验证令牌:ASP.NET Core MVC默认会验证POST请求的CSRF令牌,若表单未包含该令牌,请求会被框架拦截,无法抵达控制器方法。

修正后的视图代码

方式一:手动指定提交方式并添加CSRF令牌

<form method="post">
    @Html.AntiForgeryToken()
    <input asp-for="Name" />
    <button type="submit">Save</button>
</form>

方式二:使用ASP.NET Core TagHelper(推荐)

TagHelper会自动处理提交方式和CSRF令牌,代码更简洁:

<form asp-action="Create" asp-method="post">
    <input asp-for="Name" />
    <button type="submit">Save</button>
</form>

补充说明

  • 若视图与控制器的对应关系符合约定(视图在对应控制器的Views文件夹下),asp-action="Create"可省略,框架会自动匹配当前控制器的同名方法。
  • 确保Product模型的Name是公开可绑定的属性(如public string Name { get; set; }),否则模型绑定会失败,但这不会导致请求无法到达POST方法,仅product参数会为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 14:53:09