在没有视图的情况下执行web控制器操作[c#]

在没有视图的情况下执行web控制器操作[c#],c#,jquery,asp.net-mvc,controller,C#,Jquery,Asp.net Mvc,Controller,我有一个datatable,它从数据库中获取值,在最后一列的每一行上都有一个delete按钮 $"<button type='submit' class='btn btn-danger test' id='{i.id}' onclick='return Delete();'>Delete</button>" 我的Jquery函数: function Delete() { var table = $("#tableOverviewGames").DataTabl

我有一个datatable,它从数据库中获取值,在最后一列的每一行上都有一个delete按钮

$"<button type='submit'  class='btn btn-danger test' id='{i.id}' onclick='return Delete();'>Delete</button>"
我的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)

为什么不直接从控制器返回JSON,比如

return Json(new {success = true})

然后,您可以(如果需要的话)检查ajax成功与否

我发现,当您进行调用时,您传递了错误的Uri,这就是为什么找不到404

将HttpDelete属性更改为

[HttpDelete("{id}")]
将guid作为Uri的一部分传递,如,并且除非添加内容长度标头,否则为删除调用传递的任何正文都将被忽略,请选中此项

如果您仍然坚持要签名,请尝试更改签名,如下所示

[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");
},

如果我是你,我会开始使用基本类型(如字符串)测试导致麻烦的字段。

我仍然会遇到以下错误`删除404(未找到)'@Jeremy Replace
HttpDelete
HttpPost
。将您的类型更改为“POST”。更改
contentType:'Application/json'
。删除这一行
async:false
,最后可能最好使用
@Url.Action(“删除”,“控制器”)
在本例中,由于“Delete”是一个非常常见的函数名,我更改了内容并在控制器操作上设置了一个断点,但它似乎没有到达控制器,因此出现以下错误:
jquery-3.3.1.js:9600 POSThttp://localhost:3673/Game/Delete 500(内部服务器错误)
。你知道它可能是什么吗?@Jeremy如果你在使用Google Chrome,开发工具的网络部分是什么saying@Jeremy是的,对不起,我没看到。如果您将ID字符串化并在控制器方法中将参数更改为字符串,或者创建一个json,例如
var json='{ID:'+idGame+''''}'
,然后将其作为ajax调用中的数据传递,那么您应该首先联系控制器建议您使用
[HttpPost]
类型:'POST'
,然后您可以更改为使用正确的动词。
{i.id}
/
$(this.attr('id')
)的实际值是多少?如果它与参数不匹配,那么它将fail@freedomn-m我让它与帖子一起工作,但与删除无关。不确定是什么导致了问题。来自i.id的值是一个Guid,但我猜它在jquery中被视为一个字符串。我认为您的代码使用API方法。[FromBody]不仅仅适用于API控制器吗?这可能就是您要寻找的:
$.ajax({
 url: "Delete",
 type: 'DELETE',
 data: idGame, // Pass value directly.
 sync: false,
 contentType: false,
 success: function (data) {
 alert("Vous avez supprimé le jeu");
},