0

请看下面的代码:

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。

4

1 回答 1

0

不会。在每个页面请求(例如点击)上,页面都会触发其 Init 事件——这意味着会话变量被分配了来自 URL 字符串的值。

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

于 2012-10-27T13:30:14.160 回答