【发布时间】:2022-01-24 16:19:11
【问题描述】:
我一周前开始学习 ASP.NET Core 6.0。我已经与 SignalR 进行了实时聊天,我还将消息保存到我的数据库中。
就目前而言,它只是一个表格,每一行在不同的列中包含用户名、消息和一个删除按钮。随着新消息的到来,我将添加新行。
问题是我的删除按钮不起作用。
在控制台中我收到:POST https://localhost:7122/Chat/DeleteMessage/1 400 错误消息。
按钮:
<input type="button" onclick="Delete(@obj.Id)" value="Delete"/>
脚本:
<script>
function Delete(id) {
$.ajax({
url: "/Chat/DeleteMessage/" + id,
type: "POST",
})
}
</script>
还有控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult DeleteMessage(int id)
{
db.Chat.Remove(db.Chat.Find(id));
db.SaveChanges();
return RedirectToAction("Index");
}
【问题讨论】:
-
你需要调试你的服务器端代码,看看那里实际发生了什么。
-
嘿,首先,就 HTTP 方法而言,您应该使用
DELETE而不是POST。其次,您的DeleteMessage端点是否实际运行?由于您的HttpPost装饰器中没有指定路由参数 -
嘿!问题是 [ValidateAntiForgeryToken]。删除它后,代码运行完美。此外,我现在已经按照您对脚本中 [HttpDelete] 和“DELETE”的建议更改了我的代码。虽然我不知道有什么区别。
-
问题是你使用 POST 但你没有发布任何数据,这会给你一个 400 - bad request。
-
您也可以尝试将 AntiFororgoryToken 添加到 ajax header 中。
标签: jquery ajax asp.net-core sql-delete