【问题标题】:Setting a ASP.NET Session in jquery.click()在 jquery.click() 中设置 ASP.NET 会话
【发布时间】:2023-04-01 12:10:02
【问题描述】:

当用户在我的网站上选择一个选项卡时,我想存储他们所在的选项卡,以便在页面刷新后将它们发送回那里。我现在有这个(请原谅糟糕的编码 atm,我正在测试这个概念):

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

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

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

问题是,因为&lt;%= %&gt;不等待点击,索引总是被设置为1。

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

谢谢。

【问题讨论】:

  • 您需要对服务器进行 ajax 回调以允许它在会话中存储索引。
  • 或者使用cookie来代替。

标签: c# asp.net jquery session


【解决方案1】:

只需使用客户端会话 - 也就是“cookies”。

在点击事件上设置cookie,然后当你提交页面(或“回发”)时,这个cookie会随HTTP请求一起发送,让你通过Request.Cookies读取它。

【讨论】:

  • 谢谢,没想到。
  • @webnoob - 没问题。有时最好的解决方案是最简单的解决方案。 :)
  • 以及我们大部分时间最后想到的那些 :)
【解决方案2】:

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

【讨论】:

  • 您可以设置服务器端变量。它控制何时设置这是问题;)
【解决方案3】:

正如 El Ronnoco 所说,如果您想要在 ASP.NET 会话中选择选项卡,那么您需要将其发送回服务器。您可以使用 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();
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 2016-05-10
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多