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

时间:2019-03-04 10:10:29

标签: c# jquery asp.net-mvc controller

我有一个数据表,该表从数据库中获取值,最后一行的每一行都有一个删除按钮。

$"<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)

2 个答案:

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

如果我是你,我会使用基本类型(例如字符串)进行测试,以查找引起麻烦的字段。