【发布时间】:2021-08-10 16:19:03
【问题描述】:
所以我正在尝试从我的 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,因为如果我将我的 POST 方法重新标记为 GET 方法,那么我将进入它。
那么有人知道我在这里缺少什么吗???
【问题讨论】:
-
为什么从操作中删除 POST 是个大问题?有很多方法可以提交 POST,但删除这个属性会容易得多。
-
如果我删除了 HttpPost 属性,那么我基本上将 Get 用作 Post。无论如何,访问都需要身份验证,所以它不会那么糟糕。但是进行正确的 AJAX 调用并不难。我只是想把它做好
-
我真的很想知道为什么你认为 POST 比 GET 更正确。例如,我有 20 多年的经验,只有当我需要发送大量难以放入 URL 字符串的数据时才使用 POST。在所有其他情况下,我更喜欢 GET。而且我根本不使用任何其他方法,并且从不在操作标头中使用任何属性,例如 GET 或 POST
标签: ajax asp.net-mvc razor