Я следил за образцами. Я добавил _PjaxLayout:
<title>@ViewBag.Title</title>
@RenderBody()
Изменил мой _Layout:
<div id="shell">
@RenderBody()
</div>
<script type="text/javascript">
$(function () {
// pjax
$.pjax.defaults.timeout = 5000;
$('a').pjax('#shell');
})
</script>
Обновленный ViewStart:
@{
if (Request.Headers["X-PJAX"] != null) {
Layout = "~/Views/Shared/_PjaxLayout.cshtml";
} else {
Layout = "~/Views/Shared/_Layout.cshtml";
}
}
Однако каждый раз, когда я нажимаю на тег «a», код pjax не вызывается. Как будто селектор не работает, когда я настраиваю pjax. Что я делаю неправильно?
ОБНОВИТЬ:
Если я сделаю это:
$('document').ready(function () {
$('a').pjax({
container: '#shell',
timeout: 5000
});
});
Я вижу, что код pjax получает удар, и заголовки запросов обновляются, и новый контент загружается на страницу, но стиль и макет действительно искажаются и дублируются...
ОБНОВИТЬ:
Проверка DOM после того, как произошло это сумасшествие, показывает, что новое содержимое страницы загружается непосредственно в якорь, на который я нажимаю, а не в элемент с идентификатором #shell. ВТФ?