2013-10-10 7 views
0

У меня есть довольно стандартное решение MVC с _Layout.cshtml, Index.cshtml и т. Д. Я пытаюсь загрузить некоторые требуемые пакеты в макет только один раз, так что, когда я меняю виды, я получаю только то, что мне нужно сервер, а не то, что у меня уже есть (пакеты, макет html и т. д.).Как загрузить _Layout.cshtml только один раз?

После этого поста: MVC 3: How to render a view without its layout page when loaded via ajax?

у меня теперь есть обновленный _ViewStart. Это, кажется, не работает, хотя:

Со следующим JS ViewModel загружаемого в качестве части пучка в _layout:

var subjectservice = new baseservice(); // baseservice is an empty function 
subjectservice.subjects = {}; 
subjectservice.getSubjects = function() { 
    alert('Hit'); 
    subjectservice.subjects = 'data'; 
    } 
subjectservice.getSubjects(); 

Намеченное поведением является то, что:

  • Я получаю Субъекты, когда я изначально загружаю приложение (с помощью _Layout), независимо от того, на какой странице я нахожусь
  • Я не вызываю getSubjects снова при навигации - только когда я специально назову его из других режимов просмотра

Однако, независимо от того, на какой странице я перехожу, я всегда получаю предупреждающее сообщение, даже если макет уже загружен. Просмотр сетевой панели в Chrome Debugger показывает, что все мои вложенные js-файлы загружаются с каждой загрузкой на страницу.

Пример зрения, что я пытаюсь загрузить без повторной загрузки пучков и _layout:

public ActionResult Index() 
    { 
     return View(); 
    } 

Как я могу загрузить макет и его связки только один раз?

ответ

2

Я считаю, что вы имеете в виду возможность использования Ajax и Pushstate.

К счастью, для этого существует отличная OSS lib.

https://github.com/defunkt/jquery-pjax

Выполните следующие действия для вашего _ViewStart.cshtml

@{ 
    Layout = Request.Headers["X-PJAX"] != null ? 
      "~/Views/Shared/_PjaxLayout.cshtml" : 
      "~/Views/Shared/_Layout.cshtml"; // uses the _Layout.cshtml for unsupported browsers 
} 

Подробнее здесь
http://chrisseroka.wordpress.com/2012/04/24/getting-starteg-with-pjax-and-asp-net-mvc/

+0

Я хочу, чтобы это как из-из-коробки, как это возможно. MVC * имеет * иметь некоторый механизм для обработки этого. – RobVious

+0

Это не так, как это работает. вы либо создаете частичный запрос, либо полный запрос. частичный запрос выполняется так, как я описал ранее, и полный запрос - это то, что вы делаете сейчас. –

+0

MVC - это просто шаблон. У него нет клиентской стороны что-либо, запеченное в ... Ваше приложение «MVC» работает на сервере. –

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