2014-12-21 2 views
0

У меня есть страница с двумя частичными изображениями. Один для формы отправки и один для данных. Каждое частичное представление представляет собой вкладку в табу-контейнере. Я использую Grid.Mvc в частичном просмотре datatable, поэтому он обрабатывает все пейджинг правильно. Проблема в том, что когда я просматриваю сетку, страница возвращается к первой вкладке. Я нашел пару решений для MVC, но ни один из них не работает ниже, это моя страница с jquery. Любая помощь будет оценена по достоинству.Сохранять выбранную вкладку после обратной передачи MCV4 JQuery

Index.cshtml

<p class="hiddenData"><asp:HiddenField ID="hdnData" runat="server" /></p> 
     <div class="tab-container"> 
      <ul class="nav nav-tabs"> 
       <li><a href="#sky-form" data-toggle="tab"><span class="glyphicon glyphicon-upload"></span> File Upload</a></li> 
       <li><a href="#datagrid" data-toggle="tab"><span class="glyphicon glyphicon-file"></span> Uploaded Files</a></li> 
      </ul> 

      <div class="tab-content"> 
       @Html.Partial("_UploadForm") 


       @Html.Partial("_ProcessedFileInfo") 

      </div> <!-- Close tab-content--> 
     </div><!-- Container close --> 
    <script type="text/javascript"> 
     $(function() { 
      $('.nav-tabs a:first').tab('show'); 
      $('.nav-tabs li a').click(function() { }); 
      $('.nav-tabs li').hover(function() { 
       var liData = $(this); 
       $('.hiddenData input:hidden').val(liData.find('a').text()); 
      }); 
      if ($('.hiddenData input:hidden').val() != '') { 
       var liList = $('.tab-container li'); 
       var hiddenData = $('.hiddenData input:hidden').val(); 
       liList.each(function() { 
        if ($(this).find('a').text() == hiddenData) { 
         $(this).find('a').click(); 
        } 
       }); 
      } 
     }); 

    </script> 

ответ

2

Так что я получил это работает, и я отправляю ответ в случае, если кто-то нуждается в будущем. В двух словах, поскольку Grid.MVC выполняет всю обратную передачу через jquery, и нет передачи данных сервером, поэтому значение вкладки не может быть сохранено в скрытом поле через обратную передачу. Поэтому я пошел на путь jquery.cookie. ниже - последний jquery.

<script type="text/javascript"> 
    $(function() { 
     $('.nav-tabs a:first').tab('show'); 
     $('.nav-tabs li').click(function() { }); 
     $('.nav-tabs li').hover(function() { 
      var liData = $(this); 
      $.cookie('saved-tab', liData.find('a').text()); 
     }); 
     if ($.cookie('saved-tab') != '') { 
      var liList = $('.nav-tabs li'); 
      var hiddenData = $.cookie('saved-tab'); 
      liList.each(function() { 
       if ($(this).find('a').text() == hiddenData) { 
        $(this).find('a').click(); 
       } 
      }); 
     } 
    }); 

</script> 
Смежные вопросы