У меня есть довольно стандартное решение 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();
}
Как я могу загрузить макет и его связки только один раз?
Я хочу, чтобы это как из-из-коробки, как это возможно. MVC * имеет * иметь некоторый механизм для обработки этого. – RobVious
Это не так, как это работает. вы либо создаете частичный запрос, либо полный запрос. частичный запрос выполняется так, как я описал ранее, и полный запрос - это то, что вы делаете сейчас. –
MVC - это просто шаблон. У него нет клиентской стороны что-либо, запеченное в ... Ваше приложение «MVC» работает на сервере. –