2013-04-05 22 views
0

我正在存储一个会话变量,我将其用作各种数据访问调用的参数。该变量在会话第一次创建时设置,并且可以由用户根据他们有权访问的资源进行更改。例如,当用户首次登录其默认会话值时可能会设置为“1”。在页面的顶部是他们有权访问的所有选项的下拉列表,并更改此更改会话变量... 1,2,3,4 ...等等回发之间的会话变量不匹配

问题是,此会话变量下列原因之一造成的回发之间可能会发生变化:

  1. 会话超时,导致会话以1
  2. 用户打开两个标签/浏览器窗口中的默认值重新本身,并更改其一个选项卡上,然后切换回其中使用“1”呈现的页面的值

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

我希望能够做的是确定会话变量的值在回发之间是否发生了变化,以及是否重定向回到同一页面,导致它使用新的会话变量值重新呈现,以及让用户清楚地指出每个回发实际上做了什么。

任何想法?

回答

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); 
      } 
     } 
0

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

+0

我不相信这会解决多个标签/浏览器窗口的问题,因为第一cookie会由一个选项卡生成,然后由另一个选项卡更改,然后原始选项卡仍然会显示为使用原始Cookie进行呈现,对吗? – 2013-04-08 16:01:48