【问题标题】:Session Variable Not Being Updated? ASP.NET会话变量未更新? ASP.NET
【发布时间】:2011-02-08 09:41:30
【问题描述】:

我有一个三步向导。第一步,我使用中继器创建一系列可供个人选择的按钮。当用户选择其中一个按钮时,按钮的值将保存到会话状态。他们被带到下一步,并显示一个类似的按钮列表,这些按钮基于他们之前选择的内容。因此,如果您选择“汉堡”,您可能会收到“洋葱”、“生菜”、“番茄”的选项,而如果您选择“热狗”,您可能会收到“酸菜”和“番茄酱”的选项。 假设一个人选择汉堡包。这被保存到会话状态,如下所示:

    Public Sub Button_ItemCommand(ByVal Sender As Object, ByVal e As   RepeaterCommandEventArgs)
    ' ******** Lets pass on the results of our query in LinqDataSource1_Selecting.
    Session("food_select") = RTrim(e.CommandName)
    Wizard1.ActiveStepIndex = 1
End Sub

现在,这很好用。但是假设我选择了汉堡包,然后意识到我真的很想吃热狗。我回到向导的第一个步骤并单击热狗按钮 - 但是当向导进行到下一步时,我仍然看到汉堡包的选项!会话变量尚未更新。为什么? 谢谢!

【问题讨论】:

    标签: asp.net session variables wizard


    【解决方案1】:

    问题在于过早地检查会话变量。我需要稍后在页面加载过程中移动它们 - 例如prerender,然后会话变量将被更新。

    【讨论】:

      【解决方案2】:

      会话变量可能已更新,但下一页仍然缓存,从上次访问时开始。

      确保您的向导页面没有被缓存。

      【讨论】:

      • 您可能是对的...我将如何禁用缓存?我已经尝试放入 Page.Load Response.Cache.SetCacheability(HttpCacheability.NoCache) 但这并没有任何明显的区别。
      • @davemackey - 看到这个问题:stackoverflow.com/questions/955792/…
      • hmmm....我看了那篇文章,它似乎没有在这种特殊情况下提供帮助 - 它更多地涉及静态对象缓存。
      • @davemackey - 这个论坛帖子有更多关于禁用动态页面缓存的完整信息:forums.asp.net/t/1060173.aspx
      猜你喜欢
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      相关资源
      最近更新 更多