MVC4 で新しい Web サイトをセットアップしようとしていますが、どのような状況でもページ全体が更新されることはありません。目標は、メイン レイアウトにメディア プレーヤーを配置し、ユーザーがサイトをナビゲートしている間も影響を受けないようにすることです。
ディープリンクを使用できるように、jquery アドレス プラグインを使用することにしました。アクションが ajax を介して呼び出された場合に、完全なビューではなく部分的なビューを返すように、コントローラーにルールを設定しました。また、アドレス プラグインを設定してリクエストを防止し、代わりに ajax リクエストを実行して、div 内で結果を提供します。
サーバ側
return Request.IsAjaxRequest() ? (ActionResult) PartialView() : View();
クライアント側
$.address.state('/').init(function (event) {
$('a').address();
});
$.address.change(function (event) {
$.ajax({
cache: false,
url: event.value,
success: ajaxSuccess
});
});
function ajaxSuccess(data, status) {
$("#mainContent").html(data);
}
問題: ビューが部分として提供されている場合、ビュー内に @section をレンダリングできません。
PS:プラグインを目立たないように使用したいので、メディア プレーヤーが更新されても、javascript を使用していない人でも Web サイトに移動できます。