Невозможно вернуть false, если строка не удалена - PullRequest
0 голосов
/ 29 мая 2018

Здравствуйте, я пытаюсь удалить строку, но когда есть отношение, оно не удаляет ее, но все равно возвращает true

 public ActionResult Delete(int? User)
    {
        if (!User.HasValue)
            return Json(new { IsComplete = false });

        try
        {

            var item = Db.Institutions.FirstOrDefault(p => p.Id == User.Value);
            Db.Institutions.Remove(item);
            Db.SaveChanges();


        }
        catch
        {
            return Json(new { IsComplete = false });
        }

        return Json(new { IsComplete = true });
    }

это Удалить, как вы видите, и вот скрипт;

  $(document).on("click", ".m-portlet__nav-link", function () {
        var myDataText = $(this).data('title');
        var myDataId = $(this).data('id');
        var myDataUrl = $(this).data('url') + "/" + myDataId;
        $(".modal-body .dataIdFromJs").text(myDataText);

        $("#saveChanges").click(function () {

            var User = myDataId;

            $.ajax({
                dataType: "json",
                type: "POST",
                contentType: "application/json",
                url: '@Url.Action("Delete", "Institution")',
                data: JSON.stringify({ 'User': User }),
                success: function (data) {

                    toastr.options = {
                        "closeButton": true,
                        "debug": false,
                        "newestOnTop": false,
                        "progressBar": false,
                        "positionClass": "toast-top-right",
                        "preventDuplicates": true,
                        "onclick": null,
                        "showDuration": "300",
                        "hideDuration": "1000",
                        "timeOut": "5000",
                        "extendedTimeOut": "1000",
                        "showEasing": "swing",
                        "hideEasing": "linear",
                        "showMethod": "fadeIn",
                        "hideMethod": "fadeOut"
                    };

                    toastr.success("İşleminiz başarıyla tamamdlandı.");


                },
                error: function (data) {

                    toastr.options = {
                        "closeButton": true,
                        "debug": false,
                        "newestOnTop": false,
                        "progressBar": false,
                        "positionClass": "toast-top-right",
                        "preventDuplicates": true,
                        "onclick": null,
                        "showDuration": "300",
                        "hideDuration": "1000",
                        "timeOut": "5000",
                        "extendedTimeOut": "1000",
                        "showEasing": "swing",
                        "hideEasing": "linear",
                        "showMethod": "fadeIn",
                        "hideMethod": "fadeOut"
                    };

                    toastr.error("Hata, tekrar deneyiniz!");


                }
            });

        });
    });

когда нет отношения, он работает и возвращает true, а также удаляет строку, но когда есть отношение, он не удаляет строку, но по-прежнему возвращает true, как я могу вернуть false, если строка не удалена из-за отношений

1 Ответ

0 голосов
/ 29 мая 2018

error: function (data) в вашем вызове AJAX никогда не вызывается, пока на сервере не произойдет что-то неожиданное (например, ошибка 404).

Согласно написанным вами строкам кода всегда будет в success: function (data), потому что вы обрабатываете исключение и возвращаете какой-то ответ.

Как советовал @Stephen Muecke в своем комментарии, вы не должны либоиспользуйте catch так, чтобы он вызывал error функцию AJAX или просто проверял

success: function (data) 
{ 
  if(data.IsComplete) 
   { 
    // success toast
   } 
  else 
   {
    //error toast
   };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...