我跟踪了样本。我添加了一个_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 发现新页面内容被直接加载到我单击的锚点中,而不是 id 为 #shell 的元素中。怎么回事?