一般这种功能的实现在ASP.NET中都是用一个Button控件来实现的,实现的方法有很多,今天恰好在做项目时碰到要用这个东东,我就把能实现"返回上一页","返回前一页"的几种方法总结了一下,供大家学习之用,请多多指教:
其实要实现这个功能主要还是要用到javascript脚本语言!
方法一:
在asp.net的aspx里面的源代码中
<inputtype="buttonοnclick="javascript:window.history.go(-1);"value="返回上一页">
浅析:这个是用了HTML控件,通过一个onclick的事件,调用了javascript中的一个方法就可以了。这个是最简单的了,也同样适用于静态页面,ASP页面等。
方法二:
利用Reponse.write()
如果你对ASP有一定的了解,那么对Response.write这个东东就不会陌生了,方法一是直接有HTML页面中实现,则这个则是在后台环境中实现(这个说法好像不是很规范,呵呵)
Response.write("<scriptlanguage=javascript>history.go(-2);</script>)
<ahref="#"οnclick="javascript:history.back();">返回前一页</a>
这里为会么要采用-2的值呢,我个人认为是这样的:因为在asp.net中的页面,当你按下一个button后,由于页面中会实现page.postback的缘故,实际上在这其中是刷新了两次页面,我们要的是第一次的,所以就......
方法三:
利用Response.Redirect()或server.transfer()
在page_load中加入
if(!IsPostBack)
ViewState["retu"]=Request.UrlReferrer.ToString();
而在在返回按钮事件中
Response.Redirect(ViewState["retu"].ToString());
或Server.Transfer(ViewState["retu"].ToString());
浅析:
Request.UrlReferrer可以获取客户端上次请求的url的有关信息,我们在使用这个的时候最好对其进行一个判断
if(ViewState["UrlReferrer"]!=null)
Response.Redirect(ViewState["UrlReferrer"].ToString();
else{
Response.write("对不起,当前是最前页码“);这样才好使一点点喔
}
在使用Request.UrlReferrer时还要注意:
1.如果上一页面使用document.location方法导航到当前页面,Request.UrlReferrer返回空值
2.如果有A,B两个页面,在浏览器中直接请求A页面,在A页面的中Page_Load事件中导航到B页面,则Request.UrlReferrer返回空。因为在Page_load事件中页面还未初始化,所以无法记录当前页的信息,导航到b页面也就无法获得上一页面的信息
3.点击刷新按钮不会改变Request.UrlReferrer
方法四:
这个方法估计很少人用,不过我试了一下,也还很不错喔
在button的onClick事件中输入
this.RegisterClientScriptBlock("e","<scriptlanguage=javascript>history.go(-2);</script>");
一样可以返回到上一页
方法五:
这种方法也比较麻烦,不建议大家使用,这个好像是ASP里面的。
<ahref=<%=request.servervariable("http_Referre)%>
<asp:imageid="imageback"visible=true"imagurl="上一页"runat="server"/></a>