我有一个迷你视图,弹出并弹出用户点击。它必须在页面之间保持其状态。如果用户打开迷你视图并转到另一个页面并回来,它应该是打开的。我使用会话变量完成了这个..代码是:
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 load之间存储状态??
答案 0 :(得分: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");
}