Ajax-вызов не работает в цикле foreach в MVC - PullRequest
0 голосов
/ 17 сентября 2018

Я динамически добавляю данные в базу данных с помощью AJAX и отображаю их с помощью цикла foreach в MVC, я также добавил кнопку для удаления этих данных с помощью вызова ajax.

HTML / MVC-код:

<div id="divaddrules" class="form-group row">
   @try
      {
         foreach (var item in ViewBag.AdditionalRules)
           {
             <div class="col-sm-10">
                <p style="font-size:large">@item.AdditionalDesc</p>
             </div>
             <div class="col-sm-2">
                <input type="button" onclick="Removeinput(@item.id)" class="text-dark" style="border:none; background-color:transparent" value="X" />
              </div>
            }
       }
       catch (Exception ex){ }

</div>

Теперь, когда я нажимаю кнопку «Удалить», вызывается следующий код JS:

function Removeinput(id) {
        var datas = {};
            datas.addId = id
        $.ajax({
            url: "/Rooms/RemoveAdditionalRules",
            type: "GET",
            data: datas,
            success: function (result) {
               alert(result.id);
               $("#divaddrules").load(window.location.href + " #divaddrules");
            },
            error: function (result) {
                alert("Error: " + result.status);
           }
        });
}

иего передача этому контроллеру:

[HttpGet]
[Authorize]
public ActionResult RemoveAdditionalRules(int addId)
{
     HouseRules rules = db.HouseRules.Find(addId);
     db.HouseRules.Remove(rules);
     db.SaveChanges();

     return Json(JsonRequestBehavior.AllowGet);
}

Я получаю ошибку 500 при ошибке вызова ajax.

Может кто-нибудь сказать мне, где я делаю это неправильно?Пожалуйста .. Я застрял здесь.

Обновление: Прикрепленный скриншот: Отладочный скриншот

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Напишите вашу Removeinput функцию следующим образом:

function Removeinput(id) {
        $.ajax({
            url: "/Rooms/RemoveAdditionalRules",
            type: "GET",
            data: { addId : id},
            success: function (response) {
               alert(response);
               $("#divaddrules").load(window.location.href + " #divaddrules");
            },
            error: function (result) {
                alert("Error: " + result.status);
           }
        });
}

Затем в методе контроллера:

[HttpGet]
[Authorize]
public ActionResult RemoveAdditionalRules(int addId)
{
     AdditionalRules rules = db.AdditionalRules.Find(addId); // Here was the problem. He was pointing to the wrong table that has fixed over team viewer.
     db.AdditionalRules.Remove(rules);
     db.SaveChanges();

     return Json(addId,JsonRequestBehavior.AllowGet);
}
0 голосов
/ 17 сентября 2018

проблема в том, что в db отсутствуют значения, на изображении вы просите идентификатор 25, но возвращаете ноль, и вы пытаетесь удалить элемент, передающий нулевое значение.

, поэтому в вашем случае вам необходимо проверить перед удалением или исправить отсутствующие данные:

[HttpGet]
[Authorize]
public ActionResult RemoveAdditionalRules(int addId)
{
     HouseRules rules = db.HouseRules.Find(addId);

If(rules == null)
{
  //return error msg.
  return Json(JsonRequestBehavior.AllowGet);
}
     db.HouseRules.Remove(rules);
     db.SaveChanges();

     return Json(JsonRequestBehavior.AllowGet);
}
0 голосов
/ 17 сентября 2018

введите ваш тип ввода, возможно, это было полезно

function deleterelation(id) {
    debugger;
    if (id > 0)
        $.ajax({
            url: "/Relations/Delete/" + id,
            type: "get",
            datatype: "json",
            data: { id: id },
            success: function (response) {
                debugger;
                if (response != null) {
                    

                    $("#txtDName").text(response.name);
                    $("#DRelationId").val(response.id);
                    $("#DeleteRelation").modal("show");
                }
            },
            error: function (response) {

                $("#DeleteRelationLoading").hide();
                $("#DeleteRelation_btn_cancel").show();
                $("#DeleteRelation_btn_save").show();
            }
        });
    else
        toastr.error("Something went wrong");
}
<input type="submit" onclick="Removeinput(@item.id)" class="text-dark" style="border:none; background-color:transparent" value="X" />

, если это не сработает, пожалуйста, дайте мне знать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...