サンプルをフォローしました。_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 の要素ではなく、クリックしたアンカーに直接読み込まれていることがわかります。なんてこと?