在jquery.click()中设置ASP.NET会话

时间:2010-12-09 10:54:38

标签: c# asp.net jquery session

当用户在我的网站上选择一个标签时,我想存储它们所在的标签,以便我可以在页面刷新后将它们发回那里。我现在有这个(原因是编码错误,我正在测试这个概念):

$("#index_0_li").click(function() {
    <%= Session["SelectedIndex"] = "0" %>
});

$("#index_1_li").click(function() {
    <%= Session["SelectedIndex"] = "1" %>
});

var index = <%= Session["SelectedIndex"] %>;

问题是,因为<%= %>不等待点击,所以索引始终设置为1.

有没有人对如何实现我想做的事情有任何想法?

感谢。

3 个答案:

答案 0 :(得分:5)

只需使用客户端会话 - 又名“cookies”。

在点击事件上设置cookie,然后当您提交页面(或“回发”)时,此cookie将随HTTP请求一起发送,允许您通过Request.Cookies阅读。

答案 1 :(得分:1)

正如El Ronnoco所说,如果你想在ASP.NET Session中选择选项卡,那么你需要将它发送回服务器。您可以通过AJAX调用执行此操作,也可以将其包含在您在应用程序中执行的其他帖子中。

但是,如果您只想维护客户端的选定选项卡,则可以按照RPM1984的建议进行操作,并将其存储在cookie(或其他本地存储,如果允许HTML5)中,并选择最后一次记录在cookie /中的选项卡加载页面时的本地存储。以下是我的头脑,所以可能有语法错误(我需要看你的标签和其他标记来做一个有效的解决方案):

$("#index_0_li").click(function() {
    localStorage.setItem('SelectedTab', '#index_0_li');
});
$("#index_1_li").click(function() {
    localStorage.setItem('SelectedTab', '#index_1_li');
});

$(document).ready(function() {
    var index = localStorage.getItem('SelectedTab');
    if (index !== null) {
        $(index).click();
    }
});

答案 2 :(得分:0)

点击功能是客户端javascript。 您无法在客户端上设置服务器端变量。 您应该设置selectedindex服务器端,例如使用jquery post。