我有一个数据表,该表从数据库中获取值,最后一行的每一行都有一个删除按钮。
$"<button type='submit' class='btn btn-danger test' id='{i.id}' onclick='return Delete();'>Delete</button>"
我的按钮获取的ID是该行中模型的ID。
如果我单击按钮,我想删除该行。 但是在我的应用程序不尝试查找视图的情况下,无法弄清楚如何调用该方法。 (我没有删除视图,也不想创建一个)。 我查了一下,但是什么也没用。
我的控制器动作:
[Authorize(Roles = "user")]
[HttpDelete]
public ActionResult Delete(Guid id)
{
if (BLayer.getAllGames().ToList().Exists(x => x.id == id))
{
BLayer.DeleteGame(id);
}
return new EmptyResult();
}
我的Jquery函数:
function Delete() {
var table = $("#tableOverviewGames").DataTable();
$('#tableOverviewGames tbody').on('click', 'button', function () {
var idGame = $(this).attr('id');
$.ajax({
url: "Delete",
type: 'DELETE',
data: { id: idGame },
async: false,
contentType: false,
success: function (data) {
alert("Vous avez supprimé le jeu");
},
error: function (data) {
console.log(data);
}
});
});
}
有人可以帮我吗?
谢谢!
编辑:
这是我在控制台中看到的错误:
DELETE http://localhost:3673/Game/Delete 404 (Not Found)
答案 0 :(得分:1)
为什么不从
这样的控制器返回JSON?return Json(new {success = true})
然后,您可以(如果需要)检查ajax是否成功
答案 1 :(得分:1)
我看到当您拨打电话时,您传递了错误的Uri,这就是为什么您找不到404的原因。
将HttpDelete属性更改为
[HttpDelete("{id}")]
像 http://localhost:3673/Game/eef63296-6bb3-40a5-aa89-be69e75a66eb 一样作为Uri的一部分传递guid,传递给删除调用的任何正文都将被忽略,除非添加了Content-Length标头,请选中此link。
如果您仍然要坚持尸体,请尝试如下所示更改签名
[Authorize(Roles = "user")]
[HttpPost("delete")] //Added route to differentiate Create/Insert REST end point
public ActionResult Delete([FromBody]Guid id)
您的AJAX呼叫应该像
$.ajax({
url: "Delete",
type: 'DELETE',
data: idGame, // Pass value directly.
sync: false,
contentType: false,
success: function (data) {
alert("Vous avez supprimé le jeu");
},
如果我是你,我会使用基本类型(例如字符串)进行测试,以查找引起麻烦的字段。