2015-02-18 5 views
1

У меня есть несколько вкладок/списков:Освежающий только часть страницы

<div id="tabs"> 
       <li>@Html.ActionLink("Home", "Index", "Home")</li> 
       <li>@Html.ActionLink("Recs", "Recs", "Home")</li> 
       <li>@Html.ActionLink("Software", "Software", "Home")</li> 
       <li>@Html.ActionLink("About", "About", "Home")</li> 
       <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
      </div> 

На этих списках, у меня есть некоторые эффекты слайд-JQuery, поэтому DIV скользит в, когда пользователь входит на сайт. Но они также скользят каждый раз, когда страница перезагружается, например, когда пользователь нажимает на одну из вкладок. Это может вызвать раздражение в долгосрочной перспективе, это просто здорово, когда вы входите на сайт. Поэтому я хочу сделать так, чтобы определенная область страницы была перезагружена (а не списки). Я узнал, что могу использовать AJAX load (...) для этого, и что я должен использовать Partial View. Поэтому у меня есть частичный вид, что выглядит следующим образом:

@model WebApplication1.Models.PageRefreshModel 

<div id="retrievedContentDiv"> 
    <h2>Some content</h2> 
</div> 

И файл JS:

$(document).ready(function() { 
    $("#topMenuContentDiv li").click(function() { 
     $("#retrievedContentDiv").load("/PageRefresh/RefreshPage", { type: 'POST' }); 
    }); 

}); 

И часть _Layout.cshtml, что делает Частичное представление содержит это:

@RenderBody() 
    <div> 
     @{Html.RenderPartial("_RefreshedHandler");} 
    </div> 

где _RefreshedHandler - это частичный вид. Пока контроллер для частичного вида выглядит следующим образом:

public ActionResult RefreshPage() 
     { 
      return PartialView("_RefreshedHandler"); 
     } 

Я полностью потерял в куда идти отсюда. В конечном итоге частичное представление вернет содержимое, принадлежащее выбранной вкладке/представлению. Но сейчас проблема заключается в том, как я могу сделать это так, чтобы раздел tab/list не перезагружался одним кликом.

Решение с AJAX - это то, что я смог найти с помощью долгого времени в Интернете. Если кто-то знает лучшее решение, или если у asp.net mvc есть собственный встроенный способ справиться с этим, пожалуйста, поделитесь. Кроме того, вы можете рекомендовать лучшие решения или указывают на проблемы с моим решением до сих пор

ответ

1

Не вдаваясь в свой код, но в настоящее время существует две концепции построения webistes:

  • Классическим постраничное Approch, где каждый щелчок загружает укомплектовать новую страницу
  • Единого Page Application (SPA) Approch, где вы загрузить на сайте один раз, а затем только недостающие данные через REST API

Ваш вопрос выглядит как SPA, вы загрузить сайт и затем захотите манипулировать различными деталями без перезагрузки других частей.

Лучшая структура для таких приложений в настоящее время составляет angular.js. На странице есть интересные томатуры, и есть много примеров, как «интегрировать» его в ASP.Net-MVC.

Другие подобные структуры являются

  • knockoutjs
  • Backbone.js

, но на мой взгляд, angularjs является наиболее продвинутым.