0

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 サイトに移動できます。

4

1 に答える 1

0

スワップ可能なコンテンツを別のアクションに含めるようにページを再設計する必要があります。これは常に部分的なビューです。そうすれば、変更されるコンテンツはメインコンテンツの外にあります。メインコンテンツにはセクションを含めることができ、子コンテンツはリクエストが発生したときに置き換えられるコンテンツです。

于 2013-02-07T13:18:01.917 に答える