我正在存储一个会话变量,我将其用作各种数据访问调用的参数。首次创建会话时会设置此变量,并且用户可以根据他们有权访问的资源对其进行更改。例如,当用户首次登录其默认会话值时,可能会将其设置为“1”。在页面的上角是他们有权访问的所有选项的下拉列表,并且更改它会更改会话变量... 1,2,3,4 ...等。
问题是由于以下原因之一,此会话变量可能会在回发之间发生变化:
这会导致页面上的控件变得“陈旧”,并且回发功能不正常。依赖于事件处理程序中的会话变量的按钮单击事件可能不是“预期”事件,并且界面具有误导性。
我希望能够做的是确定会话变量的值是否在回发之间发生了变化,以及它是否已重定向到同一页面,导致它使用新的会话变量值重新呈现,并给出用户清楚地表明每个回发实际上做了什么。
有什么想法吗?
答案 0 :(得分:0)
为什么不使用cookie来存储该变量?我认为你的两个问题都会得到解决。
答案 1 :(得分:0)
我最终做的是在我的母版页中添加一个隐藏字段,然后将其放在后面的代码中:
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);
}
}