none
用户点击了浏览器的后退按钮,怎么能显示网页已过期 RRS feed

  • 问题

  • 做项目会碰到这样的问题:用户在A页面对某数据做了某操作,然后去了B页面,后来用户点击了浏览器的后退按钮,回到A页面,又对该数据进行了重复的操作,这样有时会带来某种问题

    该怎么解决?我认为有以下几种解决方案,但没有最满意的

    1。项目中禁用浏览器的前进、后退按钮

    2。当用户点击了浏览器的后退按钮,显示网页已过期,这种在有些网站上见过,但不知道是程序中写的代码还是浏览器本身就会这样

    3。项目中做到可以让用户返回来操作,但对这种操作使用某种策略避免出现数据问题

    不知道该怎么解决,希望给提供个严谨、完美的解决方案和思路

    2010年12月6日 8:38

答案

  • 你好:

    不保存缓存,即提交后表单上的数据不会被浏览器的缓存保存,如果此时再遇到刷新或者后退请求时, 就会显示“网页已过期”,数据也就不会重复提交了,这就起到了阻止刷新重复提交的效果。
    参见: http://www.cnblogs.com/zpq521/archive/2007/08/14/854631.html

    MSDN的一种解决方案: 它是通过重新定义 System.Web.UI.Page 类来实现加载页面时,是“刷新”、“后退”请求,还是正常请求,其他的页面则继承了自定义的这 个Page类
    参见:http://msdn.microsoft.com/zh-cn/library/ms379557(VS.80).aspx

    c#的实现方法
    Response.Expires = 0;
    Response.Buffer = true;
    Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);
    Response.AddHeader("pragma", "no-cache");
    Response.CacheControl = "no-cache";

    javascript的实现方法
    document.location.replace('default.html');

    html实现方法
    <META   HTTP-EQUIV=”Pragma”   CONTENT=”no-cache”>  
    <META   HTTP-EQUIV=”Cache-Control”   CONTENT=”no-cache”>  
    <META   HTTP-EQUIV=”Expires”   CONTENT=”0”>  

    http://www.cnblogs.com/linyechengwei/archive/2010/02/21/1670631.html


    I am here!
    2010年12月7日 3:29
    版主