Malikdanish Ответов: 1

Удаление с помощью ajax в .NET MVC


Я вызываю метод Delete controller из ajax при нажатии кнопки, но когда я нажимаю кнопку, он выдает ошибку типа "ссылка на объект не установлена на экземпляр объекта."

Я написал код для ajax и вызова метода delete ранее код javascript вызывался при каждой загрузке страницы, а не при нажатии кнопки, но затем я добавляю e.preventDefault(); проблема в том, что теперь он выдает ошибку, а не переходит к методу controller delete.

Мой код Javascript
<script>
    function DeleteCall(id) {

          // $(document.getElementById("sbmtInput").click(function(e){}
           $('btnDelete').click(function (e) {

           e.preventDefault();
               $.ajax({
       type: "POST",
       url: '@Url.Action("Delete", "Student_Experience")',
       data: JSON.stringify({ id: id }), //use id here
       dataType: "json",
       contentType: "application/json; charset=utf-8",
       success: function () {
               // alert("Data has been deleted.");
           location.reload();
           $(".demo1").html(result);
           },
       error: function () {
               alert("Error while deleting data");
           }
       });
   });
   </script>


мой код кнопки
<input type="submit" id="btnDelete" onclick="DeleteCall(@item.ID)" value="Delete" class="btn btn-sm btn-danger" />

Мой код контроллера
[HttpGet]
       public ActionResult Delete(int? id)
       {
           if (id == null)
           {
               return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
           }
           Student_Experience student_Experience = db.Student_Experience.Find(id);
           if (student_Experience == null)
           {
               return HttpNotFound();
           }
          // Student_Experience student_Experience = db.Student_Experience.Find(id);
           db.Student_Experience.Remove(student_Experience);
           db.SaveChanges();
           return RedirectToAction("Create","Students");
          // return View(student_Experience);
       }


Что я уже пробовал:

Как показано выше я попытался написать код но я получаю ошибку при нажатии кнопки Удалить "
Object reference not set to an instance of an object.
"кроме того, он получает вызов при загрузке страницы, а не при щелчке мыши

F-ES Sitecore

Какая строка выдает ошибку?

Malikdanish

Строка 86: Строка 87:
Строка 88: @foreach (var item in Model)
Строка 89: {
Строка 90:

Andy Lanng

В вашем посте нет никакого "foreach"

F-ES Sitecore

Этот код отсутствует в коде, который вы вставили в свой вопрос. Проверьте, что "модель" не равна нулю, если она равна нулю, выясните, почему.

ZurdoDev

Что-то есть нуль. Это такая простая ошибка, которую нужно исправить, и только вы можете это сделать, потому что мы не можем запустить ваш код. Выясните, что такое null, а затем исправьте это. Легко.

Kornfeld Eliyahu Peter

Это невозможно увидеть в вашем коде, но модель равна нулю (контроллер ее не создавал?)...
Вы должны использовать простые примеры и отладчик...

1 Ответов

Рейтинг:
1

Harsh.Shah.ifour

Привет
Ваша ошибка показывает, что вы не описали свою модель на странице просмотра. Вот почему вы получаете ошибку на for-each. Поэтому сначала попробуйте запустить код после упоминания класса модели в представлении.

Затем внесите коррективы в свой JavaScript-код:

$('btnDelete').click(function (e){
Вы должны использовать ID, чтобы кнопка "Отправить" так должны поставить # перед btnDelete подобный этому:
$('#btnDelete')

Надеюсь, это вам поможет.
Спасибо.