从数据库中删除记录后重新加载页面(表)时出现问题

时间:2019-04-02 15:27:32

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

我有一个ASP.NET CORE MVC应用程序,该应用程序带有列出一些客户端(CRUD)的表,单击删除时可以删除用户。

我要解决的问题是,当我从列表中删除记录后刷新页面时,列表仍在数据库中删除并且如果我手动重新加载(F5)页面时仍显示已删除的记录记录消失了。

我已经尝试过location.reload(),windows.location.reload(),什么都没有...我可以看到该页面正在重新加载,但记录不会消失。

我的代码在上面:

<script type="text/javascript">

        function toggleChecked(status) {
            $("#checkboxes input").each(function () {

                // Set the checked status of each to match the
                // checked status of the check all checkbox:
                $(this).prop("checked", status);
            });
        }

        function Delete(id) {
            var example_table = $("#example1")
            var r = confirm("Are you sure you want to Delete?");
            if (r == true) {

                $.ajax(
                {
                    type: "POST",
                    url: '@Url.Action("Delete", "Clients")',
                    data: {
                        id: id
                    },
                    error: function (result) {
                        alert("error");
                    },
                    success: function (result) {
                        if (result == true) {
                            example_table.ajax.reload(); // -->> The problem is in this line!
                            location.reload(); // -->> The problem is in this line!
                        }
                        else {
                            alert("There is a problem, Try Later!");
                        }
                    }
                });
            }

        }



        $(document).ready(function () {
            //Set the default value of the global checkbox to true:
            $("#checkall").prop('checked', false);

            // Attach the call to toggleChecked to the
            // click event of the global checkbox:
            $("#checkall").click(function () {
                var status = $("#checkall").prop('checked');
                toggleChecked(status);
            });
        });


    </script>

后端删除:

[HttpPost]
        public bool Delete(int id)
        {
            try
            {
                Clients client = db.Clients.Where(s => s.Id == id).First();
                db.Clients.Remove(client );
                db.SaveChanges();
                return true;
            }
            catch (System.Exception)
            {
                return false;
            }

        }

我希望删除的记录实时消失,而无需手动刷新页面。如果您能帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果删除成功,则可以在ajax调用成功的情况下从列表中手动删除该项目。 但是,通过重新加载,页面的重新加载是否调用数据库并获取数据列表?如果这不是从重新加载触发的,那么它将不会更新列表。如果是,那么我唯一的建议就是cookie可能存储了列表?

答案 1 :(得分:0)

对于服务器端刷新,您可以使用Response.Redirect(Request.RawUrl)

对于客户端刷新,您可以使用window.location.href= window.location

或者document.location.reload()而不是location.reload()