ASP.NET MVC: После действия удаления индекс не отображается

#c# #ajax #asp.net-mvc

#c# #аякс #asp.net-mvc

Вопрос:

У меня есть контроллер, который имеет Add , Edit , Delete и Index методы действий. Для моего Add действия после добавления он перенаправляется Index на, чтобы обновить сетку, чтобы отобразить добавление.

Ибо Delete это не перенаправление. Происходит удаление, но я вижу это только в том случае, если вручную обновляю страницу. Я пытался

 return RedirectToAction(nameof(Index));   

и

 w("Index", otList);   

где «otList» — это модель.

Это код, который вызывает действие удаления в контроллере

 $("#deleteButton").click(function () {  var button = $(this);  $.ajax({ method: 'POST', url: button.data('url') })  .done(function () {  $('#confirmModal').modal('hide');  button.removeData('url');  })  .fail(function () {  magalert.communicationError();  });  });  

Вот метод Delete действия в контроллере

 public IActionResult Delete(int Id)  {  try  {  var jurisdictionId = _user.Current().JurisdictionId;  _electedOfficials.deleteOrgType(jurisdictionId, Id);   //Refresh data post delete for the grid  Listlt;OrganizationTypegt; otList = new Listlt;OrganizationTypegt;();  otList = (Listlt;OrganizationTypegt;)_electedOfficials.OrgTypeList(jurisdictionId);   //return View(otList);   //return RedirectToAction(nameof(Index));   return View("Index", otList);  }  catch (Exception e)  {  _logger?.LogCritical(new EventId(103, "CAdminOrganizationType"), e, $"Error when deleting id: "   Id);  throw;  }  }  

Есть идеи, почему Index вид не обновляется, как после Add действия? Я попытался перенаправить и попытался указать представление и модель в возврате.

Вот метод Index действий, если это поможет

 public IActionResult Index()  {  try  {  var jurisdictionId = _user.Current().JurisdictionId;  Listlt;OrganizationTypegt; otList = new Listlt;OrganizationTypegt;();  otList = (Listlt;OrganizationTypegt;)_electedOfficials.OrgTypeList(jurisdictionId);  return View(otList);  }  catch (Exception e)  {  _logger?.LogCritical(new EventId(101, "CAdminOrganizationType"), e, $"Error when loading Organization Types View");  throw;  }  }  

Комментарии:

1. Вы вызываете удаление через AJAX, но также ожидаете повторной загрузки экрана? В этом нет особого смысла. Вы хотите использовать AJAX или хотите повторно загрузить страницу?

2. Я не вижу причины использовать ajax здесь. Почему бы вам просто не отправить или не указать метод удаления на контроллере?

Ответ №1:

Если вы вызываете удаление с помощью Ajax, вы не можете выполнить перенаправление, один из способов решить эту проблему-обновить страницу с помощью кода javascript location.reload(); , когда запрос будет выполнен успешно, button.RemoveData('url'); конечно, если удаление выполняется со страницы индекса.

Комментарии:

1. Спасибо, это сработало