2016-05-14 4 views
1

У меня есть страница макета, которая имеет один раскрывающийся список. Я создал 3 вида, которые будут использовать этот макет . Значение, выбранное в раскрывающемся списке, будет использоваться во всех трех созданных представлениях. У меня есть actionlinks, используемые для навигации в макете. Вот то, что я хотел бы достичьНавигация к различным представлениям без перезагрузки всей страницы

  1. Избегайте перезагрузки всей страницы (макет), когда я перейти от просмотра для просмотра, так как я хочу, чтобы сохранить значения выпадающего выбранное.

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

 @model Company.Domain.Classes.Companyviewmodel 
     <!DOCTYPE html> 
     <html> 
     <head> 
      <meta charset="utf-8" /> 
      <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
      <title>@ViewBag.Title</title> 
      <link href="~/Content/Site.css" rel="stylesheet" /> 
      <script src="~/Scripts/jquery-1.10.2.min.js"></script>  
     </head> 
     <body> 
      <div class="page"> 

       @{ 
        ViewBag.Title = "Project Status Maintenance"; 
       } 

       <div id="MainContent1"> 

        <div id="ProjID"> 
         <label for="SelectProjID">Project:</label> 
         @Html.DropDownList("ddlprojects", Model.GetProjectInformationActive.ProjectsInfoSelectList, Model.GetProjectInformationActive.SelectedProject)      
        </div>    
        <ul>    
         <li class="pp1">@Html.ActionLink("Section1", "Index", "Home")</li> 
         <li class="pp2">@Html.ActionLink("Section2", "GetSection1Data", "Home")</li> 
         <li class="pp3">@Html.ActionLink("Section3", "GetSection2Data", "Home")</li>     
        </ul> 
        <hr class="divide" /> 
        @RenderBody() 

       </div>  
       <footer> 
        <div class="ftrcontent"> 
         <p>Got it !!</p> 
        </div> 
       </footer> 
      </div> 

     </body> 
     </html> 

ответ

0

Вы можете использовать Ajax, чтобы сделать частичные загрузки страницы. Чтобы начать, дайте класс css своим ссылкам, чтобы мы могли использовать их в качестве наших селекторов jQuery при подключении поведения ajax.

@Html.ActionLink("Section1", "Index", "Home",null, new {@class="ajaxLink"}) 
@Html.ActionLink("Section2", "GetSection1Data", "Home", new {@class="ajaxLink"}) 
@Html.ActionLink("Section3", "GetSectionwData", "Home", new {@class="ajaxLink"}) 

Теперь у вас должен быть контейнер div на вашей странице, на который мы будем загружать содержимое частичного просмотра. Может быть ваш текущий вид (индекс?), Вы можете добавить вид контейнера, как этого

<div id="pageContent"></div> 

Теперь, давайте слушать click события на наших связях, получить содержание целевой страницы с помощью AJAX и нагрузки к контейнер div. Предполагая, что вы загрузили jQuery на свою страницу, мы можем использовать метод jQuery load().

$(function(){ 

    //Load the first link's content on document ready 
    var firstLinkHref=$("a.ajaxLink").eq(0).attr("href"); 
    $("#pageContent").load(firstLinkHref); 

    $("a.ajaxLink").click(function(e){ 
     e.preventDefault(); 
     $("#pageContent").load($(this).attr("href")); 
    }); 

}); 

Поскольку мы загружаем частичное содержимое страницы нашего шаблонного DIV, мы не должны возвращать полную разметку (включая макет) из методов действий, мы просто должны частичного его содержимого. Для этого вы можете использовать метод PartialView() вместо метода View().

public ActionResult GetSection1Data() 
{ 
    if(Request.IsAjaxRequest()) 
    { 
    return PartialView(); 
    } 
    return View(); 
} 
+0

Спасибо. Я собираюсь попробовать это. Так это

многоразового использования для всех 3 страниц? – user2320476

+0

Это должно быть только на вашей начальной странице (где у вас есть ссылки). Он больше похож на владельца места на другой контент страницы. – Shyju

+0

У меня есть ссылки на моей главной странице. Вы говорите, что это будет на моей главной странице? В каком разделе я это ставлю? – user2320476

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