Asp.net网页已过期浏览器后退按钮

时间:2016-04-20 19:12:44

标签: c# asp.net

我在使用简单的ASP.NET应用程序和回发后的后退按钮时遇到了问题。

有问题的页面上有一个简单的表单,一些文本字段等,以及一个做回发的下拉列表(autopostback)。

“正常”流程是用户填写表单并可能更改下拉列表。根据下拉值,页面内容可能会发生变化。

我遇到的问题是,在用户更改了下拉菜单并且回发完成后,用户提交按钮,页面导航到其他页面,然后单击后退按钮。他们看到来自IE的“网页已过期”消息。

2 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为您要求浏览器在提交表单之前“返回”状态。在这种情况下,页面已“过期”,因为表单上的信息已经发送到服务器。

你在可能没有意识到的地方得到回复。例如,“基于下拉值,页面内容可能会发生变化”。您可能通过OnChange事件完成此操作,该事件在下拉列表更改时触发回发。现在,后退按钮的行为与您发现的一样。

您有几个选择:

  1. 在Javascript中更改客户端的表单内容。
  2. 使用AJAX / UpdatePanels和部分回发重建您的表单。
  3. 将您网页上的链接放到应用的常用部分,希望大家使用这些链接而不是返回。 :)

答案 1 :(得分:0)

这是浏览器中的预期行为。当您发布数据然后返回时,浏览器会告诉您内容已过期。想象一下,你刚买了东西,然后你不希望浏览器重新发送该信息。解决方案是使用Ajax发布到您的服务器,然后浏览器不会更新页面,也不会向您显示警告。