在asp.net mvc中删除记录后如何更新视图

时间:2018-12-19 06:12:19

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

我有一个视图,在其中我将记录保存到数据库,并在同一页面上显示具有Viewbag变量的记录,我在每个记录的前面都有一个删除按钮删除记录,我希望在删除记录后,视图应得到更新,以实现该目的

我的控制器方法

   public ActionResult Delete(int id)
    {
        db.Delete<Logs>(id);
        return RedirectToAction("Index", new { id });
    }

我的html和查询

<button type="button" id="delete" data-id="@item.LogId" class="delete btn btn-default" style="background-color:transparent"><i class="fas fa-times h3" style="color:red;"></i></button>

        $('.delete').click(function () {
            var selectedid = $(this).data("id");
            $.post("@Url.Action("Delete", "Log")", { id: selectedid });

        });

1 个答案:

答案 0 :(得分:2)

您应该知道的第一件事是RedirectToAction在AJAX调用中将不起作用,您应该传递URL以location.href进行重定向,如下所示:

控制器操作

[HttpPost]
public ActionResult Delete(int id)
{
    db.Delete<Logs>(id);

    // other stuff

    string url = this.Url.Action("Index", "Log", new { id = id });

    return Json(url);
}

jQuery

$.post("@Url.Action("Delete", "Log")", { id: selectedid }, function (result) {
    window.location.href = result;
});

或者最好创建一个局部视图,其中包含要通过AJAX更新的所有元素,然后将其传递到success部分:

控制器操作

[HttpPost]
public ActionResult Delete(int id)
{
    db.Delete<Logs>(id);

    // other stuff

    return PartialView("PartialViewName");
}

jQuery

$.post("@Url.Action("Delete", "Log")", { id: selectedid }, function (result) {
    $('#targetElement').html(result);
});