listview itemcommand后退按钮后没有触发

时间:2012-04-04 15:49:03

标签: asp.net back-button

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

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

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

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

我正在寻找一种最简洁的方式让用户点击并重新加载页面,以便项目命令事件再次正确触发。

2 个答案:

答案 0 :(得分:0)

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

  

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

答案 1 :(得分:0)

找到这个答案花了很多研究,所以希望其他人偶然发现这个问题并找到答案。我很惊讶我实际上能找到这个。好吧,足够幸灾乐祸。

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

我在DotNetSlackers.com上使用Dino Esposito的这些文章作为参考。 Server Side History ManagementClient Side History Management