Привет есть следующий код на мой взгляд (JQuery):Перенаправление после EndInvoke в ASP.NET MVC
$.post('<%=Url.Content("~/Customer/StartLongRunningProcess")%>');
Wich вызывает асинхронный вызов (C#):
public void StartLongRunningProcess()
{
ProcessTask processTask = new ProcessTask();
processTask.BeginInvoke(new AsyncCallback(EndLongRunningProcess), processTask);
}
Наконец, результат по телефону:
public void EndLongRunningProcess(IAsyncResult result)
{
ProcessTask processTask = (ProcessTask)result.AsyncState;
string id = processTask.EndInvoke(result);
RedirectToAction("~/SubscriptionList/SubscribedIndex/" + id);
}
Переадресация игнорируется. Response.Redirect также не работает, поскольку HTTP-заголовки уже отправлены. Я попытался изменить window.location из javascript, это работает, но я не могу передать идентификатор параметра ViewData. Любая идея решить это?
Благодарим за ответ. На самом деле почтовый вызов jquery выполняется кнопкой. В этот момент представление было отображено контроллером. Trying Response.Redirect вместо перенаправления приводит к исключению HttpException: «Невозможно перенаправить после отправки HTTP-заголовков». – Apocatastasis
И да, я могу где-то сохранить этот идентификатор и вернуться к нему позже (т. Е. В базе данных). Это та часть, которую я пытаюсь избежать. – Apocatastasis
Даже если javascript вызывается из-за нажатия кнопки, он по-прежнему является ajax-вызовом, даже в соответствии с документацией jQuery. Кроме того, RedirectToAction принимает имя действия, а не виртуальный путь, поэтому, хотя это может и не быть вашей непосредственной проблемой, это будет один из них в ближайшее время. Я бы предложил не отправлять перенаправление, но отправляя ответ, который ваш делегат 'success' может оценить и определить, на какую страницу перейти и использовать' window.location', чтобы выполнить перенаправление на стороне клиента. –