2014年2月7日 星期五

[ASP.NET C#] Asp.Net Button 實現返回上一頁的功能

Reference:http://jason0324.pixnet.net/blog/post/36562376-asp.net-button-%E5%AF%A6%E7%8F%BE%E8%BF%94%E5%9B%9E%E4%B8%8A%E4%B8%80%E9%A0%81%E7%9A%84%E5%8A%9F%E8%83%BD

在ASP.net中都是用一個button的控制項來實現的,
其實要實現這個功能主要還是要用到javascript
方法一:
Asp.Net
<input type="button onclick="javascript:window.history.go(-1);"value="返回上一頁">

淺析:這個是用了HTML控制項,通過一個onclick的事件,調用了javascript中的一個方法就可以了。這個是最簡單的了,也同樣適用於靜態頁面,ASP頁面等。
方法二:
利用Reponse.write
如果你對ASP有一定的瞭解,那麼對Response.write這個東東就不會陌生了,方法一是直接有HTML頁面中實現,則這個則是在後臺環境中實現
C#
Response.write("<script language=javascript>history.go(-2);</script>)
OR Asp.Net
<a   href="#"   onclick="javascript:history.back();">返回前一頁</a>
這裡為會麼要採用-2的值呢,我個人認為是這樣的:因為在asp.net中的頁面,當你按下一個button後,由於頁面中會實現page.postback的緣故,實際上在這其中是刷新了兩次頁面,我們要的是第一次的,所以就......

方法三
利用Response.Redirect() 或 server.transfer()
C# Page_Load
if(!IsPostBack)   
        ViewState["UrlReferrer"]=Request.UrlReferrer.ToString();   
C# 控制項事件
if(ViewState["UrlReferrer"]!=null)  Response.Redirect(ViewState["UrlReferrer"].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 

方法四:
在button的onClick事件中輸入
C#
this.RegisterClientScriptBlock("e", "<script language=javascript>history.go(-2);</script>");
方法五
這種方法也比較麻煩,不建議大家使用,這個好像是ASP裡面的。
<a href=&lt;%=request.servervariable("http_Referre)%>
 
<asp:image id="imageback" visible = true" imagurl="上一頁" runat="server"/></a>
 

沒有留言:

張貼留言