2012-04-15 135 views
0

我有一个拥有母版页和多个普通页面的asp.net网站。主页面上有一个菜单栏,用户可以选择普通页面。我有一个普通页面的Page_Load事件中的代码。问题是,这个事件似乎只触发一次 - 用户第一次导航到页面。如果用户导航到另一个页面,然后再返回,则该事件不会触发。谁能告诉我我做错了什么?Page_Load事件只会触发一次

+0

页面是否缓存在浏览器中?如果是这样,它不会再次从服务器加载,你的'page_load'不会被解雇。 – Oded 2012-04-15 19:35:59

+0

根据您的IIS设置,页面被浏览器缓存并且不会返回到服务器的机会很大。 (尤其如果使用后退按钮导航到前一页)。当您将唯一的QueryString变量添加到URL的末尾时会发生什么? 'somepage.aspx - > somepage.aspx?2' – leepowers 2012-04-15 19:44:04

回答

0

看来,问题是由浏览器缓存引起的该页面,谢谢你指出我在正确的方向。

这个问题不仅在使用后退按钮时出现,所以我害怕防范这个问题并不能解决问题。

我的解决方案是用服务器端asp.net按钮控件替换我用于菜单的简单html超链接。当后面的代码执行response.redirect时,目标页面的page_load事件似乎每次都会执行。

+0

其实,我找到了一个更好的方法。简单地将以下内容添加到page_load事件可防止页面被缓存:Response.Cache.SetCacheability(HttpCacheability.NoCache); – 2012-04-18 18:39:50

1

如果用户用户Back浏览器浏览器的按钮将使用缓存版本的页面,如果您的页面正常并且没有应用特定设置。这些代码会导致如果用户使用Back按钮没有显示他/她:

​​

或为prvent用户回去使用此代码:

<body onLoad="if(history.length>0)history.go(+1)">