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");
    }
};

studentinformation 控制器基本上具有设置字符串值的 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 回答