首页 > 编程 > .NET > 正文

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

2024-07-10 13:12:37
字体:
来源:转载
供稿:网友
注册会员,创建你的web开发资料库,

  我们在编写基于 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 次数、设置回退链接的地址

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表