#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. Спасибо, это сработало