• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET 中 “返回上一页”的实现方法小结

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

方法一:

<input type="button onclick="javascript:window.history.go(-1);"value="返回上一页">

方法二

在button的onClick事件响应函数中写如下代码:

This.ClientScript.RegisterClientScriptBlock(this.GetType(), "e", "<script language=javascript>history.go(-2);</script>", true);

剖析

假设当前页面为A,上一页为B,则当A中的button被按下后,A页面会立即被回发到服务器进行处理,服务器端向A页面中添加了我们写的那个script块。

我们感到按钮被按下之后,页面刷新了一下,然后我们看到的已不是页面A了,而是全新的A+页面,A+比A多了一个script块。

浏览器解析A+页面过程中遇到了script块,就执行javascript语句,执行到history.go(-2)时就连着退后两步。先从A+页面退到A页面,再从A页面退到B页面。

于是就完成了整个回退过程。

 

方法一中之所以只回退一步,是因为它的button没有runat="server"属性,所以按钮被按下之后并不回发到服务器,于是只回退一步,就从A回到B了。

方法三

在page_load中加入

if(!IsPostBack)

        ViewState["retu"]=Request.UrlReferrer.ToString();  

 

而在返回按钮事件中

if(ViewState["retu"]!=null){

       Response.Redirect(ViewState["retu"].ToString());    

}

else

{

      Response.write("对不起,当前是最前页码“);

}

注意:

以下这段来自:http://stswordman.cnblogs.com/archive/2006/06/12/423910.html

在使用Request.UrlReferrer时:

1. 如果上一页面使用document.location方法导航到当前页面,Request.UrlReferrer返回空值

2. 如果有A,B两个页面,在浏览器中直接请求A页面,在A页面的中Page_Load事件中导航到B页面,则Request.UrlReferrer返回空。因为在Page_load事件中页面还未初始化,所以无法记录当前页的信息,导航到B页面也就无法获得上一页面的信息。

3. 点击刷新按钮不会改变Request.UrlReferrer

方法四

<a href=<%=request.servervariable.GetValues("http_Referre")%>上一页</a>

总结

方法1、2是通过javascript通知浏览器回到上一页,浏览器将调出本地缓存中的上一页数据,所以回到上一页后,表单数据还被保留着。

而方法3、4则是通过在本页记录下上一页的url,然后在你点击“上一页”按钮时重新向服务器发出http请求,再次请求这个url,所以你得到的“上一页”将是全新的页面,以前填写的表单数据都没有了。

参考 <http://www.cnblogs.com/majunyue/archive/2009/02/06/1385355.html>

方法一:

<input type="button onclick="javascript:window.history.go(-1);"value="返回上一页">

方法二

在button的onClick事件响应函数中写如下代码:

This.ClientScript.RegisterClientScriptBlock(this.GetType(), "e", "<script language=javascript>history.go(-2);</script>", true);

剖析

假设当前页面为A,上一页为B,则当A中的button被按下后,A页面会立即被回发到服务器进行处理,服务器端向A页面中添加了我们写的那个script块。

我们感到按钮被按下之后,页面刷新了一下,然后我们看到的已不是页面A了,而是全新的A+页面,A+比A多了一个script块。

浏览器解析A+页面过程中遇到了script块,就执行javascript语句,执行到history.go(-2)时就连着退后两步。先从A+页面退到A页面,再从A页面退到B页面。

于是就完成了整个回退过程。

 

方法一中之所以只回退一步,是因为它的button没有runat="server"属性,所以按钮被按下之后并不回发到服务器,于是只回退一步,就从A回到B了。

方法三

在page_load中加入

if(!IsPostBack)

        ViewState["retu"]=Request.UrlReferrer.ToString();  

 

而在返回按钮事件中

if(ViewState["retu"]!=null){

       Response.Redirect(ViewState["retu"].ToString());    

}

else

{

      Response.write("对不起,当前是最前页码“);

}

注意:

以下这段来自:http://stswordman.cnblogs.com/archive/2006/06/12/423910.html

在使用Request.UrlReferrer时:

1. 如果上一页面使用document.location方法导航到当前页面,Request.UrlReferrer返回空值

2. 如果有A,B两个页面,在浏览器中直接请求A页面,在A页面的中Page_Load事件中导航到B页面,则Request.UrlReferrer返回空。因为在Page_load事件中页面还未初始化,所以无法记录当前页的信息,导航到B页面也就无法获得上一页面的信息。

3. 点击刷新按钮不会改变Request.UrlReferrer

方法四

<a href=<%=request.servervariable.GetValues("http_Referre")%>上一页</a>

总结

方法1、2是通过javascript通知浏览器回到上一页,浏览器将调出本地缓存中的上一页数据,所以回到上一页后,表单数据还被保留着。

而方法3、4则是通过在本页记录下上一页的url,然后在你点击“上一页”按钮时重新向服务器发出http请求,再次请求这个url,所以你得到的“上一页”将是全新的页面,以前填写的表单数据都没有了。

参考 <http://www.cnblogs.com/majunyue/archive/2009/02/06/1385355.html>


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
VS.net调试ASP.NET运行项目出错:无法调试应用程序[zz]发布时间:2022-07-10
下一篇:
ASP.Net MVC FCKEditor文本编辑器发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap