Я пытаюсь перезагрузить свое представление с контроллера, чтобы отобразить данные, хранящиеся в TempData, после вызова AJAX POST для моего контроллера. Проблема в том, что мой вызов метода RedirectToAction ничего не перенаправляет.
Вот несколько примеров кода
Вид:
$('#incidentTableBody').on('click', 'button.relayBack', function () {
Post('/Incident/RelayBack', { incidentId: $(this).parent().parent().data('id'), ownerId: $(this).parent().parent().data('ownerid') }, function () { });
});
function Post(action, data, callback) {
$.ajax({
url: action,
type: "POST",
data: data,
//error: function (jqXHR, textStatus, errorThrown) {
// console.log(errorThrown);
//},
success: callback,
cache: false
});
}
Контроллер:
[Authorize]
public ActionResult IncidentList()
{
ViewBag.Title = "IncidentList";
return View();
}
[HttpPost]
[Authorize]
public ActionResult RelayBack(string incidentId, string ownerId)
{
bool success;
try
{
new Guid(_incidentService.RelayBack(new Guid(incidentId), new Guid(ownerId)));
success = true;
}
catch
{
success = false;
}
if (success)
{
TempData["Message"] = "Le ticket a bien été relancé par l'équipe support";
TempData["Class"] = "alert-success";
}
else
{
TempData["Message"] = "Une erreur est survenue lors de la relance de l'incident";
TempData["Class"] = "alert-warning";
}
return RedirectToAction("IncidentList"); // TODO : redirect doesn't work
}
Мой вызов AJAX работает и вызывает мой контроллер, затем все мои инструкции метода контроллера, кроме последнего (перенаправление), выполняются правильно. Последний, RedirectToAction, фактически вызывает IncidentList (), который должен вернуть мое представление, но ничего не происходит.
Пытался заменить RedirectToAction на View, Redirect ... ничего лучше не вышло. Я попытался перезагрузить свою функцию обратного вызова AJAX, но поведение оказалось не таким, как я ожидал, и я предпочитаю делать это с помощью своего контроллера.
Я уже сделал то же самое (вызов RedirectToAction для перезагрузки моей страницы и отображения сохраненных данных TempData) в моем приложении, но после отправки формы POST, а не вызова AJAX, может ли он (AJAX) быть источником проблемы?