0

我有使用多视图的页面。每个视图都包含一个单独的用户控件。其中一个用户控件有一个带有图像按钮的列表视图,该按钮会导致在多视图中加载不同的视图。到目前为止一切都很好。当用户点击后退按钮时,他们将被带回包含列表视图的用户控件。然后用户单击另一个图像按钮以查看不同的数据,并使用与以前相同的数据返回到详细用户控件。在调试时,我看到点击后退按钮后项目命令事件没有触发。

我尝试替换多视图并将每个用户控件放入单独的面板中。这根本没有改变结果。

我尝试设置一个在页面加载后 5 秒过期的 cookie。当用户继续到下一页,然后点击返回(已经超过 5 秒),我强制表单再次提交。这将再次加载下一个控件,而不是重新加载页面。

我尝试将可缓存性设置为无缓存。这会导致“页面过期”消息,并且用户必须刷新页面。这对用户来说是丑陋的,并且肯定会影响用户体验。

我正在为用户寻找最干净的方式来单击返回并重新加载页面,以便项目命令事件再次正确触发。

4

2 回答 2

0

找到这个答案需要大量研究,所以希望其他人偶然发现这个问题并找到我的答案。我很惊讶我居然能找到这个。好吧,够幸灾乐祸了。

因为当用户单击后退按钮时页面不会回发,所以事件不会正确触发,从而导致下一页出现问题。必须发生的是您需要能够处理浏览器的导航按钮(即后退和前进)。为此,您必须在脚本管理器中将 EnableHistory 设置为 true,并从脚本管理器处理 Navigate 事件。然后,您可以使用保存在状态对象中的信息重新加载控件。

我使用 DotNetSlackers.com 上 Dino Esposito 的这些文章作为参考。服务器端历史管理客户端历史管理

于 2012-04-05T16:05:44.030 回答
0

原因是 Back 不会影响页面生命周期。这肯定是因为页面被缓存并且缓存的页面不在服务器上执行。您可以尝试使用此代码来解决此问题。

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

于 2012-04-04T16:56:10.817 回答