Удалить с ajax in. net mvc без сохранения - PullRequest
0 голосов
/ 23 января 2020

Когда я использую форму для отправки пост-запроса на удаление изменений базы данных, но когда я использую ajax, при отладке значение базы данных IsDeleted (read IMPORTANT) изменяется, когда внутри метода после выполнения db.SaveChanges () , но когда действие Delete выполнено, и я возвращаю значение IsDeleted, возвращается к старому значению. Также успешно вызывается действие «Удалить», идентификатор передается, а носитель находится в БД. В чем может быть проблема?

ВАЖНО: Я использую мягкое удаление, когда не удаляю запись, но я меняю значение IsDeleted на true при удалении, что также работает, когда Я не использую ajax.

У меня есть кнопка, в которой я передаю идентификатор модели в запрос ajax:

<button class="btn btn-danger" id="deleteCurrent" data-delete-id="@Model.Id">Delete Carrier</button>

Вот мой сценарий, вызов ajax успешно:

        $(function () {
            $("#deleteCurrent").click(function () {
                var DeleteId = $(this).data("delete-id");
                console.log("/Carriers/Delete/" + DeleteId);
                $.ajax({
                    url: "/Carriers/Delete/" + DeleteId,
                    type: "POST"
                }).done(function (result) {
                    if (result === true) {
                        alert('data is deleted successfully');
                    }
                    else {
                        alert('Error Please Try again..');
                    }

                }).fail(function () {
                    alert("Something Went Wrong.");
                });
            });
        });
    </script>

И, наконец, вот мой контроллер (та же проблема возникает, если я использую (ApplicationDbContext db = new ApplicationDbContext ())):

        private ApplicationDbContext db = new ApplicationDbContext(); 
        // other actions
        [HttpPost]
        public JsonResult Delete(int id)
        {
            Carrier carrier = db.Carriers.Where(c => c.Id == id).FirstOrDefault<Carrier>();
            db.Carriers.Remove(carrier);
            db.SaveChanges();

            return Json(true, JsonRequestBehavior.AllowGet);
        }
...