Показать JQuery исчезает после успешного POST - PullRequest
0 голосов
/ 21 января 2011

Я пытаюсь отобразить следующий div (через fadeIn / fadeOut), когда пользователь сохраняет данные в форме.

// Display a notification if the save is successful.
$('<div class="save-alert">The current scenario has been saved.</div>')
    .insertAfter($('#main'))
    .fadeIn('slow')
    .animate({ opacity: 1.0 }, 3000)
    .fadeOut('slow', function () {
    $(this).remove();
});

В настоящее время я отправляю форму с помощью помощника Html.BeginForm. Из-за этого вся моя страница размещена, и я не могу отобразить вышеупомянутое уведомление. Я понимаю, что могу использовать Ajax.BeginForm, но затем я сталкиваюсь с другими проблемами (а именно с невозможностью выполнить return RedirectToAction("Index", new { id = scenario.ScenarioID }); после сохранения сценария).

У кого-нибудь есть предложения по поводу чего-то еще, что я мог бы попробовать?

Ответы [ 4 ]

0 голосов
/ 21 января 2011

Полагаю, вы хотите избежать движения по маршруту ajax. Если это так, просто поместите строку сообщения в файл cookie и проверьте наличие сообщения в вашем представлении. Если есть сообщение, отобразите его. Так как оно находится в cookie, вы можете получить сообщение, даже если вы перенаправили после обработки успешного сообщения. Обязательно очистите куки после показа сообщения!

Мы формализовали этот процесс в моей компании и называем его «Flash» (как это делал Ruby on Rails, а может, и сейчас).

В идеале вы могли бы обернуть логику настройки, поиска и отображения сообщений во вспомогательный класс, чтобы абстрагировать его реализацию от вашего представления. Таким образом, вы можете использовать файлы cookie, viewdata или даже значения сеанса, и вашим представлениям и контроллерам не придется менять поведение.

0 голосов
/ 21 января 2011

Ну, я просто отклоняю отправку и делаю это через AJAX:

$('#form').submit(function()
{
  return false;

  $.post('test.php', $(this).serialize(), function(data)
  {
    //Do your stuff. Data is the POST response data.
  });
});

Удачи!

0 голосов
/ 21 января 2011

Возврат URL и перенаправление на стороне клиента. Вы можете использовать JsonResult или другое для отправки данных в MVC обратно клиенту.

0 голосов
/ 21 января 2011

Я думаю, вы должны использовать jquery.post(), чтобы подать фоновое сообщение, чтобы предотвратить перезагрузку страницы.

http://api.jquery.com/jQuery.post/

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