使用ASP.NET从另一个页面返回后,为什么Page_Load没有触发 - ergo史诗般的尴尬:)

G B*_*dal 8 c# asp.net events response.redirect

假设我在同一个ASP.NET C#WebSite上有两个页面.

  • Page1.aspx在Page_Load事件中执行操作
  • 我使用菜单导航到Page2.aspx
  • Page2.aspx做了一些事情然后Response.Redirect回到Page1.aspx
  • 这次Page1.aspx无法在Page_Load事件中执行任务,因为它永远不会触发.

我试图以声明方式关闭缓存,尝试在我的重定向中使用true for endResponse ...似乎没有任何区别.

别介意大家!我是个白痴!使用Visual Studio Dev Localhost,Redirect重定向到实时页面!:)

Guf*_*ffa 14

页面执行的原因不会影响页面循环,Load事件总是在页面执行时触发.

因此,如果Page_Load有时不运行,那是因为页面被缓存而且不在服务器上执行.该页面可以缓存在浏览器中,路由器中的某个路由器中,或者使用服务器端页面缓存的服务器上缓存.

如果您尚未为页面启用服务器端页面缓存,则会将其缓存在浏览器或网络中.您可以使用缓存设置来尝试消除此问题:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Run Code Online (Sandbox Code Playgroud)

这将使页面在正常情况下不被缓存.(还要检查您的浏览器是否处于脱机模式,然后它将使用缓存中的任何内容,无论其缓存设置如何.)


SLa*_*aks 5

当使用“后退”按钮导航到页面时,该页面将从内存中重新加载,并且没有请求发送到服务器。

您可以使用Fiddler确认这一点。

我不确定在所有浏览器中是否都是如此。