回发之间的会话变量不匹配



我正在存储一个会话变量,我使用它作为各种数据访问调用的参数传递。这个变量是在第一次创建会话时设置的,用户可以根据他们可以访问的资源来更改它。例如,当用户第一次登录时,其默认会话值可能被设置为"1"。在页面的顶部是一个下拉列表,其中包含了他们可以访问的所有选项,更改此选项会更改会话变量…1、2、3、4……等。

问题是,由于以下原因之一,该会话变量可能在回发之间发生变化:

  1. 会话超时,导致会话重新创建,默认值为1
  2. 用户打开两个选项卡/浏览器窗口,并在一个选项卡上更改它,然后切换到另一个页面,其中使用"1"作为值

这会导致页面上的控件变得"陈旧",并且回发行为不正确。在事件处理程序中依赖会话变量的按钮单击事件可能不是"预期的"事件,并且接口具有误导性。

我想能够做的是确定会话变量的值是否在回发之间发生了变化,如果它重定向到同一页面,导致它使用新的会话变量值重新渲染,并给用户一个明确的指示,每次回发实际做什么。

任何想法?

为什么不使用cookie来存储该变量呢?我想这样就能解决你们的问题了。

我最后做的是添加一个隐藏字段到我的主页,然后把它放在后面的代码:

        if (!Page.IsPostBack)
        {
            //SelectedID comes from masterpage property (Session variable)
            hiddenField.Value = SelectedID.ToString();
            ...
        }
        else
        {
            int selectedId = Int32.Parse(hiddenField.Value);
            if (selectedId != SelectedID)
            {
                Response.Redirect(Request.RawUrl);
            }
        }

相关内容

  • 没有找到相关文章

最新更新