0

我正在存储一个会话变量,我用它作为参数传递给各种数据访问调用。此变量在首次创建会话时设置,用户可以根据他们有权访问的资源进行更改。例如,当用户第一次登录时,他们的默认会话值可能设置为“1”。在页面的右上角是他们可以访问的所有选项的下拉列表,更改此选项会更改会话变量... 1、2、3、4...等。

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

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

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

我想要做的是确定会话变量的值是否在回发之间发生了变化,以及它是否已重定向回同一页面,导致它使用新的会话变量值重新呈现,并为用户提供清楚地表明每个回发实际上做了什么。

有任何想法吗?

4

2 回答 2

0

为什么不使用 cookie 来存储该变量?我认为你的两个问题都可以解决。

于 2013-04-06T00:46:19.900 回答
0

我最终做的是在我的母版页中添加一个 HiddenField,然后将其放入后面的代码中:

        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);
            }
        }
于 2013-04-08T17:05:07.360 回答