这里发布了几个类似的问题,但没有一个能够完全解决我的问题。这是(简化)方案:
Page1.aspx的:
用户登陆Page1.aspx,然后单击按钮。在postback
期间,用户被重定向到Page2.aspx(通过Response.Redirect
)。
Page2.aspx
在Page2.aspx的page load
事件中,发生了一些验证,然后进一步重定向到Page3.aspx(再次通过Response.Redirect
)。
Page3.aspx 只需向用户显示一些信息即可。没问题。
现在当用户在Page3.aspx上时出现问题,并点击浏览器中的后退按钮。在这种情况下,我希望Page2.aspx重新加载,因此再次执行验证。但是,Page2.aspx被有效地绕过,并且重新加载了Page1.aspx(并且仅当我关闭页面的缓存时)。关闭Page2.aspx的缓存并没有什么区别。
所以,我的问题是,当用户点击浏览器中的后退按钮时,有没有办法让Page2.aspx运行?
答案 0 :(得分:4)
尝试把它放在第2页后面的代码中,我把它放在page_load上面,它似乎让页面在按下后退按钮后触发了代码。
protected override void OnInit(EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.MinValue);
base.OnInit(e);
}
答案 1 :(得分:0)
安德鲁
会话变量中带标记的小技巧
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
If Session("flag") = 1 Then
Session("flag") = 0
Response.Write("<script>window.location.reload();</script>")
End If
Else
Session("flag") = 1
End If
End Sub
Protected Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
Response.Redirect("Page3.aspx")
End Sub
希望帮助你