首页 > 解决方案 > 如何在 ASP.NET MVC 中使用 Ajax.ActionLink 作为 POST?

问题描述

所以我试图从我的 ASP.NET MVC 项目中的索引页面中删除条目,这在很大程度上基于演示项目,但我不想像设置演示项目那样重定向到删除页面。我想在我的控制器中使用 post 方法删除并重新加载:

在此处输入图像描述

        // POST: Consumers/Delete/5
        [HttpPost]
        public async Task<ActionResult> Delete(Guid id)
        {
           // ...
        }

我尝试使用@Html.ActionLink它不起作用,因为我学到了。所以这里有很多非常相似的问题,有(接受的)答案表明这应该有效:

@Ajax.ActionLink("Delete", "Delete", "Consumer", new { id = item.Id }, new AjaxOptions { HttpMethod = "POST" })

唯一的问题是它不起作用。如果我这样做,那么我会得到一个 404,它的 URL 正确,但 HTTP 方法错误

在此处输入图像描述

我知道尽管 Ajax 链接设置了 GET,但它仍在触发 GET,因为如果我将我的 POST 方法重新标记为 GET 方法,那么我将进入它。

那么有人知道我在这里缺少什么吗???

标签: ajaxasp.net-mvcrazor

解决方案


操作链接始终生成 GET 方法。因此,只需从操作中删除 POST 即可。

 public async Task<ActionResult> Delete(Guid id)
 {
           // ...
 }

恕我直言,最好不要为动作分配方法,因为不同的浏览器可以生成不同的方法。


推荐阅读