在Web开发中,会遇到从一页(父页)导向另一页(子页),并且要求“返回”父页的情况,在这里如果用ASP.NET提供的 Response.Redirect()方法,往往不会达到理想的效果,例如:返回后,重新加载了页面,无法保存导向子页前的状态,等等,在这里我就介绍 一下如何使用JavaScript中history.go()函数来实现返回功能并且保存住状态的方法。
     这个函数用起来很简单,只要在页面上加一个html的input元素,例如:
     <input type="button" value="返回">
     然后再为这个元素添加onclick属性,如:
     <input type="button" value="返回" onclick="history.go(-1);">

这样就能达到返回上一页的效果。但是,往往在实践中,并没有这么简单,当你在向服务器提交请求的时候,引起页面回发,你再用history.go(-1)
这招就不灵啦,它在这里是返回你回发前的状态,go后面的参数,实际上就是标识你要返回你回发第前n次的状态,所以只要能记住回发了几次,就能用
history.go(-n)准确地返回到父页了。
     在Web开发中,全局变量也是存不住的,当页面回发后,全局变量的值就会丢失,取而代之的是视图状态,所以我们就只能用视图状态来记录回发的次数了。那么就封装一个视图状态属性把。
     public int returnCount
     {
         get{
               if(ViewState["returnCount"] == null)
                   ViewState["returnCount"] = 0;
               return   (int)ViewState["returnCount"];
         }
         set { ViewState["returnCount"] = value ;}
     }
     定义好这个后,把他放到Page_Load里面,让他每次在页面回发时减1,这样就能准确的记住回发了几次。
     protected void Page_Load(object sender, EventArgs e)
     {
         returnCount--; //要放在!iIsPostBack之外,要不然就仅仅在页面第一次加载时执行一次,回发时就不执行了。
         if(!IsPostBack)
         {

}
     }
     吼吼,到这一步还没完呢,要把我们封装的属性加到Js里面。如下:
     <input type="button" value="返回" onclick="history.go('<% =returnCount %>');">
     这下就完美了,管你在页面上怎么回发,只要一点这个按钮,肯定会返回到父业的。
     注意:
     1、如果在本页面上有Response.Redirect()到本页或者类似的情况,那么就要将returnCount作为查询字符串传递一下了,因为这东西在页面失效时就over了。
     2、本文仅对非Ajax的Web系统有作用,Ajax的还没仔细研究过.

最新文章

  1. runtime笔记一
  2. elk安装(这个是初级的可以把这个套件安上)
  3. adop - ERRORMSG: Since earlier patching session failed and you are invoking apply again
  4. Adobe Illustrator CS6 绿色简体中文版下载地址
  5. Flash 无法输入中文的修正方法
  6. oepn sync
  7. jquery插件-自定义select
  8. CButtonEx的实现
  9. Spring初始化ApplicationContext线程托管实际运用架构构思
  10. lesson - 5 Linux用户和组管理
  11. Fresco-FaceBook推出的Android图片加载库
  12. bzoj4487[Jsoi2015]染色问题 容斥+组合
  13. hive -- 协同过滤sql语句
  14. mysql批量进行optimize table操作
  15. TCP连接异常断开检测(转)
  16. C# 只能输入字母或数字
  17. iOS Terminating app due to uncaught exception &amp;#39;NSInternalInconsistencyException&amp;#39;, reason: &amp;#39;unable to
  18. python 模拟普通用户和管路员登录购物系统小程序
  19. R语言数据结构一
  20. background-image:url(data:image/gif;base64,XXXX) base64方式将本地图片添加到文档中

热门文章

  1. Java内存解析 程序的执行过程
  2. 如何获知PHP程序占用多少内存(复制)
  3. Django:学习笔记(7)——模型进阶
  4. Dom与Bom,增删改查
  5. Hbase1.0伪分布式集群启动失败问题
  6. 20145316《Java程序设计》第六周学习总结
  7. I.MX6中PC连接开发板问题
  8. Linux学习笔记之阿里云ECS部署LAMP环境
  9. Python3.x:访问带参数链接并且获取返回json串
  10. uboot下ext4load的用法