Asp.net mvc 未找到控制器操作MVC 5

Asp.net mvc 未找到控制器操作MVC 5,asp.net-mvc,html.actionlink,Asp.net Mvc,Html.actionlink,在我看来,我有这个ActionLink @Html.ActionLink("Edit", "Edit", "Contract", new { id = Model.ContractId }, new { @class = "btn btn-primary btn-sm" }) 我有一个编辑视图和一个ContractController 在ContractController中,我有这个操作方法 [HttpPost, ActionName("Edit")] [ValidateAntiForger

在我看来,我有这个ActionLink

@Html.ActionLink("Edit", "Edit", "Contract", new { id = Model.ContractId }, new { @class = "btn btn-primary btn-sm" })
我有一个编辑视图和一个
ContractController

ContractController
中,我有这个操作方法

[HttpPost, ActionName("Edit")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> EditPost(int id, ContractViewModel vm)
{
  ... code here
[HttpPost,ActionName(“编辑”)]
[ValidateAntiForgeryToken]
公共异步任务EditPost(int id,ContractViewModel vm)
{
…这里是代码
在运行时,当单击actionlink(Contract\Edit\33)时,我会得到一个

404在controller.Contract.ContractController上未找到错误编辑


有人能看到我哪里出错了吗?

代码应该如下所示,以便从您创建的链接访问操作方法

[HttpPost, ActionName("Edit")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> EditPost(int id)
{
[HttpPost,ActionName(“编辑”)]
[ValidateAntiForgeryToken]
公共异步任务EditPost(int-id)
{

是否存在具有“[HttpGet]”属性的EditPost。因为操作链接将生成Get请求的链接,而不是Post请求。或者只是一个编辑操作方法。因为它不需要明确说明它是HttpGetIve,所以将方法签名更改为[ActionName(“Edit”)][ValidateAntiForgeryToken]公共异步任务编辑(int id,ContractCreationViewModel vm){但是我现在发现这个错误,所需的防伪表单字段“\uuu RequestVerificationToken”不存在。这可能会帮助您更好地理解这个过程。链接生成GET,而不是POST。删除
[HttpPost]
ValidateAntiForgeryToken]
属性并从方法中删除
ContractViewModel vm
参数