为什么生命周期没有运行

时间:2011-10-29 04:13:44

标签: asp.net lifecycle

我在asp.net网站上有2页:

  • 第1页包含对象。
  • 第2页包含有关其中一个对象的信息。

有一些我不明白的东西,我希望你们中的一些人可以解释它。

我点击第1页上的一个对象,它显示在第2页,但是当我点击浏览器中的后退按钮时,onpreinit,oninit和evertything不会在第1页上调用。有人知道为什么吗?

2 个答案:

答案 0 :(得分:1)

当您单击浏览器上的“后退”按钮时,通常不会重新提交请求。它实际上是上一页的缓存版本。

您可以向HTML添加标签,告诉浏览器不要缓存页面:

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

这些标签应根据HTML规范一起使用:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32

  

当请求消息中存在no-cache指令时,   应用程序应该甚至将请求转发到源服务器   如果它有一个被请求的缓存副本。这个pragma   指令与no-cache cache-directive具有相同的语义(请参阅   第14.9节)并在此定义为向后兼容   HTTP / 1.0。客户端应该在无缓存时包含两个头字段   请求被发送到不知道是HTTP / 1.1兼容的服务器。

ASP.net拥有自己的缓存控件,如下所示:

MSDN页面缓存:http://msdn.microsoft.com/en-us/library/w9s3a17d.aspx

MSDN ASP.net缓存:http://msdn.microsoft.com/en-us/library/xsbfdd8c.aspx

答案 1 :(得分:0)

点击“返回”不会重新提交GET请求到服务器,它只是返回您的缓存副本。