RedirectToAction MVC 3 после вызова $ .ajax - PullRequest
2 голосов
/ 08 декабря 2011

С моей точки зрения, я отправляю через $ .ajax JSON-объект на мой контроллер, чтобы сохранить его в базе данных.Если все успешно, я хочу перенаправить к другому действию, которое покажет другое представление.

Если я использую этот код:

return RedirectToAction("CreatePage", "Survey", new {id = question.PageId});

Выполнение переходит к контроллеру Survey, который возвращает представление, ноэто не показано.

Я прочитал какой-то пост, в котором говорилось, что перенаправление через ajax невозможно.

Решение, которое я использую до сих пор, состоит в том, чтобы перенаправить через javascript следующим образом:

success: function (ret) {
            window.location.href = "/Survey/CreatePage/" + $("#PageId").val();
         }

Хотя это всегда работает, иногда мне нужно обновить представление CreatePage, чтобы показать последние сделанные изменения.

Есть идеи, как лучше решить эту проблему?

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 12 декабря 2011

Как предположил mccow002, мне не нужно было совершать вызов через AJAX для этой части.Изучив предложенные решения, я понял, что могу просто представить его в форме.Мое замешательство произошло из-за того, что у меня есть сохранение, продолжение редактирования и сохранение.Для сохранения и продолжения я использую вызов AJAX, но для опции сохранения с отправленной формой все в порядке.

Большое спасибо за вашу помощь.

0 голосов
/ 09 декабря 2011

Вы можете использовать [OutputCache] в действии CreatePage, чтобы оно не кэшировало страницу или не кэшировало так долго.

кэширование вывода

0 голосов
/ 08 декабря 2011

Вместо перенаправления на новую страницу, вы можете отправить визуализированный html из кода .net обратно клиенту и загрузить этот html на страницу, например, $("#main").load(renderedHtml).

Но для обновления страницы вы можете написать простой скрипт, который запускается с заданными интервалами и обновляет содержимое страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...