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

ASP.NET MVC项目:表单无法访问控制器方法的问题排查

问题原因与解决方案

核心问题:缺少防伪令牌验证字段

你的控制器Post方法添加了[ValidateAntiForgeryToken]特性,ASP.NET Core会强制验证请求中的防伪令牌,而你的表单里没有包含这个令牌字段,导致服务器拒绝POST请求,返回405错误。

修复步骤

在<form>标签内部添加防伪令牌字段,有两种简单方式:

  1. 使用HTML助手生成:
<form asp-action="Create" method="post">
    @Html.AntiForgeryToken()
    <!-- 原有的表单字段 -->
    <label for="title">Title</label>
    <input name="title" id="title">

    <label for="author">Author</label>
    <input name="author" id="author">

    <label for="yearPublished">Year</label>
    <input name="yearPublished" id="yearPublished">

    <input type="submit" value="Submit">
</form>
  1. 使用标签助手生成隐藏字段:
<form asp-action="Create" method="post">
    <input type="hidden" asp-for="__RequestVerificationToken" />
    <!-- 原有的表单字段 -->
    <!-- 省略其余内容 -->
</form>

额外检查点

  • 确认你的控制器类名为BooksController,因为asp-action="Create"会默认提交到当前路由下的Books/Create接口,确保路由匹配。
  • 检查CreateViewModel的属性名称是否和表单输入的name属性完全一致(你的代码里属性与表单name匹配,这部分无问题)。

内容的提问来源于stack exchange,提问作者Joey O'Neill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:02:51