当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET 中处理页面“回退”的方法

ASP.NET
asp.net服务器上几种常见异常的解决方案.
Asp.net 下载功能的解决方案
asp.net 页面传值的几个方法
asp.net Cookie跨域、虚拟目录等设置方法
aspnet_isapi.dll设置图文方法.net程序实现伪静态
ASP.NET Web应用程序的安全解决方案浅析
asp.net 图片的读写入库实现代码
asp.net cookie的读写实例
浅析ASP.NET生成随机密码函数
asp.net 防止用户通过后退按钮重复提交表单
ASP.NET 调用百度搜索引擎的代码
asp.net用url重写URLReWriter实现任意二级域名 新
asp.net用url重写URLReWriter实现任意二级域名 高级篇
asp.net 下载文件时根据MIME类型自动判断保存文件的扩展名
asp.net 文件上传 实时进度
asp.net+jquery Gridview的多行拖放, 以及跨控件拖放
ASP.NET 页面之间传递值方式优缺点比较
asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别
ASP.NET 返回随机数实现代码
asp.net FreeTextBox配置详解

ASP.NET 中处理页面“回退”的方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 53 ::
收藏到网摘: n/a

  我们在编写基于 ASP.NET 的应用程序时,如果代码执行出错或检测到异常,一般会提示用户“返回”或“回退”,或者在多步操作、列表/详细的查看界面中,也会给用户提供回退到上一页面的链接,对于这种情况,大家很快就会想到的简单做法就是利用 Javascript 来实现,即 history.go(-1) ,但是由于 ASP.NET 页面的 PostBack 机制,所以 history.go(-1) 可能还是当前页面,而不能真正回退到上一页面。

  在 Classifieds Site Starter Kit 中,学习到一种不错的关于回退的处理方法,可以分别在客户端和服务器控件中实现页面的回退,代码如下:

  1)首先在页面中增加两个属性

   //记录上一个页面的信息
  private string UrlReferrer
   ...{
  get
        ...{
            return ViewState["UrlReferrer"] as string;
        }
        set
        ...{
            ViewState["UrlReferrer"] = value;
        }

    }

  //记录 PostBack 的次数
  public int NumPostBacks
    ...{
        get
        ...{
            if (ViewState["NumPostBacks"] != null)
                return (int)ViewState["NumPostBacks"];
            else
            ...{
                ViewState["NumPostBacks"] = 0;
                return 0;
            }
        }
        set
        ...{
            ViewState["NumPostBacks"] = value;
        }
    }

 

  // 记录上一页面的信息或更新 PostBack 的次数
   protected void Page_Load(object sender, EventArgs e)
   ...{

   if (!Page.IsPostBack)
        ...{
            if (Request.UrlReferrer != null)
                this.UrlReferrer = Request.UrlReferrer.ToString();
        }
        else
            NumPostBacks++;

        int goBackSteps = NumPostBacks + 1;
        BackLink.NavigateUrl = String.Format("javascript:history.go(-{0});", goBackSteps);
    }

 

   //在代码中回退
   protected void ReturnToPreviousPage()
  ...{
        string referrer = UrlReferrer;
        if (referrer != null)
            Response.Redirect(referrer);
        else
            Response.Redirect("~/default.aspx", true);

 

 
  3)直接在代码中处理回退操作(如 Back_Click),可以直接调用如下方法
 
  2)在 Page_Load 事件记录上一页面地址、更新 Postback 次数、设置回退链接的地址