我正在尝试从控制器重新加载我的视图,以便在对我的控制器进行AJAX POST调用后显示存储在TempData中的数据。 问题是我对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(),它应该返回我的视图但没有任何反应。
我尝试用View,Redirect替换RedirectToAction ......没有更好的事情发生。我试图从我的AJAX成功回调函数重新加载,但行为不是我的预期,我更喜欢从我的控制器做。
我已经在我的应用程序中完成了相同的操作(RedirectToAction调用以重新加载我的页面并显示TempData存储的数据),但在表单POST提交而不是AJAX调用之后,它是否(AJAX)成为问题的根源?
答案 0 :(得分:4)
因此您希望在发布后重定向您的网页。
将您的返回方法更改为Json。
success: function (response) {
window.location.href = response.redirectToUrl;
}
和OnSuccess Ajax
{{1}}
就是这样。
答案 1 :(得分:0)
在Ajax中使用" window.location = redirectUrl"在success方法中重定向到特定页面而不是回调。