2013-07-29 2 views
1

Ok, ребята, это может быть глупый вопрос, я не могу найти какой-либо связанный с этим вопрос, возможно, это не проблемасохранить текущие изменения страницы, прежде чем ActionLink

напр. У меня есть меню нав в моем приложении MVC 4, как этого

  • @Html.ActionLink("Driver", "Index", "Driver")
  • @Html.ActionLink("Vehicle", "Index", "Vehicle")
  • индекса контроллера Driver Получить У меня есть модель из базы данных и отобразить все в режиме, пользователь делает что-то изменить без представить и нажмите ссылку actionlink для перехода на страницу Vehicle, а затем снова верните страницу драйвера.

    что я хочу на странице индекса драйвера. Я могу сохранить последние изменения и отобразить их, но в индексе управления драйвером GET мне нужно получить все из базы данных, так как у меня нет сообщения, чтобы сохранить последнее изменение в tempdata.

    любые идеи? большое спасибо

    обновление: Спасибо Филиппу очень много о ответе, но все еще немного проблема. , так как ActionLink происходит до $ (window) .unload, если я передаю сообщение серверу в jQuery, postback потеряет направление.

    +0

    Пожалуйста, прекратите ссылаться на «ASP.NET MVC» просто как «MVC». Один из них является основой, в то время как другой является независимым от языка шаблоном проектирования. Это похоже на вызов IE - «Интернет» –

    ответ

    0

    Я бы попытался поймать событие onbeforeunload и проверить, внесли ли пользователь изменения в модель.

    Если произошли изменения, вы можете сохранить их в браузерах local or session storage (HTML5) или отправить их на сервер (веб-службу).

    При следующей перезагрузке страницы вы должны проверить хранилище или задать сервер для модели.

    (function ($) { 
        var isDirty = false; 
    
        $(function(){ 
         // check local/session storage OR fetch data from server. 
        }); 
    
        $(':input').change(function() { 
         isDirty = true; 
        }); 
    
        $(window).unload(function() { 
         if (isDirty) { 
          // store changes in local/session storage OR post them to the server. 
         } 
        }); 
    }(jQuery)); 
    
    +0

    Большое спасибо Филиппу, это отличный ответ –

    Смежные вопросы