会话变量和后退按钮

时间:2012-10-27 13:17:41

标签: asp.net

请参阅以下代码:

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        Session("Test") = Request.QueryString("ID")
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Response.Write(Session("Test"))
    End Sub
End Class

请按照以下步骤操作:

  

1)转到Default.aspx?id = 1
      2)单击按钮
      3)转到Default.aspx?id = 2
      4)单击按钮
      5)使用后退按钮返回步骤1       6)单击按钮

是否有任何情况下第6步之后的ID可以是2而不是1?我试图捕获一个错误。我不认为这可能是因为按钮启动了ASP.NET生命周期并且首先执行了页面init。

1 个答案:

答案 0 :(得分:0)

没有。在每个页面请求(例如点击)上,页面触发其Init事件 - 表示会话变量被赋予URL字符串中的值。

虽然可能会发生什么(至少我认为,请验证这一点!)是您的浏览器将以前的版本保留在缓存中,因此当您单击后退按钮时,它可能显示错误的值。但是,刷新后它应该按预期工作。尝试使用VS调试您的网站,以查看存储在变量中的实际值。