使用 Ajax MVC 删除操作方法

Delete action method using Ajax MVC

我正在尝试使用 ajax 在 mvc.net 中实现单页应用程序,我在实现删除服务时遇到问题,这是我的删除操作方法:

[HttpPost]
    public ActionResult Delete(int id)
    {
        Movie movie = db.Movies.Find(id);
        db.Movies.Remove(movie);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

这是我的删除 onclick 函数:

 function Delete(id){
        //here i want to take delete the row with it specifc id ,

          $.ajax({
            type: "POST",
            url: '@Url.Action("Delete")',
            data: JSON.stringify({ ID: id }),
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function () {
               // alert("Data has been deleted.");
                LoadData();
            },
            error: function () {
                alert("Error while deleting data");
            }
        });

单击删除按钮时应调用此删除,这是由加载数据函数创建的:

function LoadData() {
    $("#tblStudent tbody tr").remove();
    $.ajax({
        type: 'POST',
        url: '@Url.Action("getStudent")',
        dataType: 'json',
        data: { id: '' },
        success: function (data) {
            var items = '';
            $.each(data, function (i, item) {
                var rows = "<tr>"
                + "<td class='prtoducttd' id='MovieID'>" + item.ID  + "</td>"
                + "<td class='prtoducttd'>" + item.Name + "</td>"
                + "<td class='prtoducttd'>" + item.Type + "</td>"
                    + "<td class='prtoducttd'>" + item.date + "</td>"
                    + "<td class='prtoducttd'>" + "<input class='btn btn- primary'  name='submitButton' id='btnEdit' value='Edit'  onclick='delete' type='button'>"+ "<input class='btn btn- primary' name='submitButton' id='btnDel' value='Delete' type='button'>" + "</td>"
                + "</tr>";
                $('#tblStudent tbody').append(rows);
            });
        },

如何在点击按钮时将电影的id传递给删除函数?

ajax 需要一些修改。参数名称和方法名称在控制器和 ajax.

中应完全匹配

 $.ajax({
            type: "POST",
            url: '/ControllerName/Delete',// same case sensitive action name
            data: JSON.stringify({ id: id }), //small letter id, same as in controller parameter
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function () {
               // alert("Data has been deleted.");
                LoadData();
            },
            error: function () {
                alert("Error while deleting data");
            }

如果仍未调用删除操作,请删除 json.stringify 并仅传递 'id': idval in data。

控制器操作方法和数据中的参数:ajax 调用的 {} 必须相同,因为您在控制器中使用 public ActionResult Delete(int id) 您必须使用 id : ajax 通话中的 ID。

     $.ajax({
        type: "POST",
        url: '@Url.Action("Delete")',
        data: JSON.stringify({ id: id }), //use id here
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function () {
           // alert("Data has been deleted.");
            LoadData();
        },
        error: function () {
            alert("Error while deleting data");
        }
    });

第二,将加载数据函数中的整行写入单个 var 行变量并不是一个好主意。你可以声明 var row = '';在每个循环之前然后可以这样做。

var rows = '';
        $.each(data, function (i, item) {
            rows += "<tr>",
            rows += '<td>' + item.MovieID+ '</td>'
            //and so on.............and lastly use .html instead of append

            $('#tblStudent tbody').html(rows);
        });

作为参考,参考这个 link :- http://www.c-sharpcorner.com/article/crud-operation-in-asp-net-mvc-using-ajax-and-bootstrap/