0

ユーザーがクリックするとポップアウトしてポップインするミニビューがあります。ページ間で状態を保持する必要があります。ユーザーがミニビューを開き、別のページに移動して戻ってきた場合、それは開いているはずです.私はセッション変数を使用してこれを行いました..コードは次のとおりです。

HTML:

<input type="hidden" value="@Session["miniviewstatus"]" id="miniviewstatus" />

Javascript:

$(".pullout_ico").click(function() {
        var url = "/StudentInformation/getminiviewstatus";
        $.post(url, { status: "true" }, function (data) {
            openMiniView();
        });
    });
    $(".pullout_button").click(function() {
        var url = "/StudentInformation/getminiviewstatus";
        $.post(url, { status: "false" }, function (data) {
            closeMiniView();
        });

    });
    var status = $("#miniviewstatus").val();
    if (status == "true") {
        openMiniView();
    }
    if (status == "false") {
        closeMiniView();
    }
    function openMiniView() {
            $(".pullout_block").show(250);
            $(".pullout_ico").hide(100);
            $(".left_content").removeClass("bigger_left_content");
    }
    function closeMiniView() {
            $(".pullout_ico").show(100);
            $(".pullout_block").hide(250);
            $(".left_content").addClass("bigger_left_content");
    }
};

学生情報コントローラーには基本的に、文字列値を設定する getminiviewstatus があります。今はうまくいきますが、私はこの方法が好きではありません。とにかく、dom ロードの間にステータスを保存できますか??

4

1 に答える 1

0

コメントで ravi が回答しているように、js を使用してクライアント側で処理を行う場合、cookie は優れたソリューションです。もう少し詳しく説明すると、jquery-cookieプラグインを使用して Cookie を取得および設定します。次に、コードを次のように変更し、ajax アクションに対するサーバー側のサポートを削除します。

$(".pullout_ico").click(function() {
    $.cookie("miniviewstatus", true);
});
$(".pullout_button").click(function() {
    $.cookie("miniviewstatus", false);
});

var status = $.cookie("miniviewstatus");
if (status) {
    openMiniView();
} else {
    closeMiniView();
}

function openMiniView() {
    $(".pullout_block").show(250);
    $(".pullout_ico").hide(100);
    $(".left_content").removeClass("bigger_left_content");
}

function closeMiniView() {
    $(".pullout_ico").show(100);
    $(".pullout_block").hide(250);
    $(".left_content").addClass("bigger_left_content");
}
于 2013-05-15T18:32:43.240 に答える