Ajax POST int到MVC

时间:2018-02-08 15:13:17

标签: javascript jquery ajax asp.net-mvc asp.net-mvc-4

我试图将带有Ajax的INT发布到我的MVC控制器。

脚本调试确认我的变量是带有值的INT(例如8而不是字符串" 8")。所有代码行都被执行 我收到了我的警报错误消息。

我在控制器中的Action中有一个断点,但我从来没有这么远。我在行动中收到通知,请求失败,但它只说 " POST Order / Delete"。我的控制器名称是OrderController,Action名称是Delete。

我的JavaScript:

//Delete order
$(".deleteOrder").on("click", function () {

    var id = parseInt($(this).attr("id"));

    if (id !== null) {
        $.ajax({
            url: "/Order/Delete",
            method: "POST",
            contentType: "application/JSON;odata=verbose",
            data: id ,
            success: function (result) {
                alert("Ok")
            },
            error: function (error) {
                alert("Fail");
            }
        });
    }

});

我的MVC行动

  [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Delete(int id)
    {
        List<OrderRow> lstOrderRow = new List<OrderRow>();

        lstOrderRow = db.OrderRows.Where(x => x.OrderId == id).ToList();

        foreach(var row in lstOrderRow)
        {
            db.OrderRows.Remove(row);

        }

        Order order = new Order();

        order = db.Orders.Find(id);

        db.Orders.Remove(order);
        db.SaveChanges();

        return RedirectToAction("index");
    }

2 个答案:

答案 0 :(得分:2)

您应该通过删除数据字段

来使用这样的网址
url: "/Order/Delete/" + id,

或在数据中发送id,如下所示

data: {id: id},

答案 1 :(得分:0)

这对我有用:

data: JSON.stringify({ id: id}) 
dataType: "json",
contentType: 'application/json; charset=utf-8',