В настоящее время я использую диалоги пользовательского интерфейса JQuery на своем сайте. Однако недавно я начал использовать коллекцию MVC TempData для уведомлений об успехах / неудачах различных действий, вызванных моими диалогами. Ничего особенного или нового. Однако возникла проблема, с которой я не могу найти простое, очевидно, решение.
В некоторых моих диалогах мы перенаправляем на новую страницу при успешной отправке данных. Эти данные отправляются с использованием jQuery.Post, а затем мы делаем перенаправление при успешной отправке, используя window.location на странице. Однако это означает, что любые TempData, которые мы установили в методе контроллера, недоступны. Имеет смысл, так как для этого требуется тип возврата ActionResult.
Итак, мой вопрос был, используя JQuery UI Dialogs, что бы люди посоветовали в качестве способа передачи данных в контроллер БЕЗ использования jQuery POST или AJAX-вызовов. Очевидно, что я сам могу встроить форму в диалог и использовать ее, но кажется, что она наполовину лишена смысла использовать диалог JQuery UI, когда он обрабатывает все кнопки и т. Д., Для вас.
Возможно, мне не хватает чего-то действительно очевидного, но любая помощь будет принята с благодарностью. Большое спасибо.
Обновлено: вот весь метод действий. NB - это одна из реализаций, на самом деле я пробовал это несколькими способами. Но это текущая реализация. Когда вызывается действие и мы выполняем перенаправление на стороне клиента, заданные мною TempData получаются как NULL
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public void RetireSelf(int playerKey)
{
PlayerDTO player = _playerTask.GetPlayer(playerKey);
_log.Info("Player retiring themselves from ladder " + player.Name + player.PlayerKey);
UserDTO user = _userTask.GetUser(CurrentUserName);
if (user.UserKey != player.UserKey)
{
throw new LadderSecurityException(CurrentUserName + "trying to self retire another player");
}
_playerTask.RetirePlayer(playerKey);
TempData["notification"] = "You were retired from the ladder.";
}