轉帖|其它|編輯:郝浩|2011-08-09 15:31:02.000|閱讀 1857 次
概述: 在Web開發技術中有很多的頁面跳轉的i技術,我們可以利用ASP.NET的內置對象提供的方法實現跳轉,也可以根據ASP.NET提供的服務器控件與 HTML控件實現頁面跳轉,我們還可以利用javascript腳本語言編寫函數實現頁面跳轉。現在我們就具體的看一下7種頁面跳轉的方法。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在Web開發技術中有很多的頁面跳轉的i技術,我們可以利用ASP.NET的內置對象提供的方法實現跳轉,也可以根據ASP.NET提供的服務器控件與 HTML控件實現頁面跳轉,我們還可以利用javascript腳本語言編寫函數實現頁面跳轉。現在我們就具體的看一下7種頁面跳轉的發方法。
一、前言
在Web開發技術中有很多的頁面跳轉的i技術,我們可以利用ASP.NET的內置對象提供的方法實現跳轉,也可以根據ASP.NET提供的服務器控件與 HTML控件實現頁面跳轉,我們還可以利用javascript腳本語言編寫函數實現頁面跳轉。現在我們就具體的看一下7種頁面跳轉的發方法。
二、頁面跳轉技術
1、利用HTML標簽
1: <a href=”test.aspx”>測試頁</a>
這個例子十分的簡單,只要通過<a>標簽的href屬性制定要跳轉的頁面的url就可以實現跳轉。
2、HyperLink控件
這是最常見的一種轉向方法;
1)Asp.net 服務器端控件 屬性NavigateUrl指定要跳轉到的Url地址
2)NavigateUrl是可以在服務器端使用代碼修改,這個區別于<a>
3)由于HyperLink本身沒有事件所以要在服務器端其它事件中設置NavigateUrl
4)實例代碼
<Asp:HyperLink id=”hyperlink” runat=”server” NavigateUrl=”test.aspx”>ok</Asp:HyperLink>
3、Response.Redirect()方法
1)過程:發送一個Http響應到客戶端,通知客戶端跳轉到一個新的頁面,然后客戶端再發送跳轉請求到服務器端。
2)頁面跳轉之后內部控件保存的所有信息丟失,當A跳轉到B,B頁面將不能訪問A頁面提交的數據信息。
3)使用這個方法使用這個方法跳轉后瀏覽器地址欄的Url信息改變
4)可以使用Session Cookies Application等對象進行頁面間的數據傳遞
5)重定向操作發生在客戶端,總共涉及到兩次與Web服務器的通信:一次是對原始頁面的請求,另一次是重定向新頁面的請求
這個跳轉頁面的方法跳轉的速度不快,因為它要走2個來回(2次postback),但他可以跳 轉到任何頁面,沒有站點頁面限制(即可以由雅虎跳到新浪),同時不能跳過登錄保護
6)實例代碼
<asp:Button ID="Button1" runat="server" Text="跳轉" onclick="Button1_Click1" />
我們現在設計頁面中添加一個Button控件,然后我們在相應的cs文件中紅編寫一下代碼。
protected void Button1_Click1(object sender, EventArgs e)
{
Response.Redirect("//www.baidu.com");
}
4、Server.Transfer()方法
1)實現頁面跳轉的同時將頁面的控制權進行移交
2)頁面跳轉過程中Request Session等保存的信息不變,跳轉之后可以使用上一個頁面提交的數據
3)跳轉之后瀏覽器地址欄的Url不變
4)這種方法的重定向請求是在服務器端的進行的,瀏覽器不知道頁面已經發生了一次跳轉
速度快,只需要一次postback ,但是它必須是在同一個站點下,因為它是server的一個方法。另外,他能跳過登錄保護。
5)實例代碼
protected void Button1_Click(object sender, EventArgs e)
{
Server.Transfer("Server2.aspx");
}
注意:這里的路徑只能是虛擬路徑,也就是說可以制定為同一目錄下的頁面,但是不能制定絕對的地址比如說www.baidu.com.
5、 Server.Execute()方法
1)該方法允許當前頁面執行同一個Web服務器上的另一個頁面
2)頁面執行完畢之后重新回到原始頁面發出Server.Execute()的位置。
3)這種方式類似針對頁面的一次函數調用,被請求的頁面可以使用原始頁面的表單數據和查詢字符串集合
4)被調用頁面的Page指令的EnableViewStateMac屬性設置為False
5)實例代碼
protected void Button1_Click(object sender, EventArgs e)
{
Server.Execute("Server2.aspx");
}
注意:這里也只能使用虛擬路徑。
6、Javascript實現跳轉
我們可以頁面中利用javascript編寫函數,來實現跳轉。
<script language="javascript" type="text/javascript">
// 以下方式直接跳轉
window.location.href = 'hello.html';
// 以下方式定時跳轉
setTimeout("javascript:location.href='hello.html'", 5000);
</script>
7、Respone.Write()
可以通過在Write方法中傳入腳本語言javascript來實現頁面跳轉。
Respose.Write( " <script language= 'javascript '> window.open( ' "+ url + " ');
</script> ");
三、頁面跳轉總結
1)當需要把用戶跳轉到另一臺服務器上的頁面的時候使用redirect
2)當需要把用戶跳轉到非aspx頁面時候,如html使用redirect
3)需要把查詢字符串作為url一部分的時候保留傳給服務器的時候,因為其他2種方法不能做到2次postback,把數據先帶回服務器使用redirect
4)需要aspx頁面間的轉換(不涉及登錄) 使用transfer
5)當需要把aspx頁面的輸出結果插入到另一個aspx頁面的時候使用execute方法。
6)如果要讓用戶來決定何時轉換頁面以及轉到哪一個頁面,超級鏈接最適合。
7)如果要用程序來控制轉換的目標,但轉換的時機由用戶決定,使用Web服務器的HyperLink控件,動態設置其NavigateUrl屬性。
8)如果要把用戶連接到另一臺服務器上的資源,使用Response.Redirect。
9)如果要將查詢字符串作為URL的一部分保留,使用Response.Redirect。
10)如果要將執行流程轉入同一Web服務器的另一個ASPX頁面,應當使用Server.Transfer而不是Response.Redirect,因為Server.Transfer能夠避免不必要的網絡通信,從而獲得更好的性能和瀏覽效果。
11)如果要捕獲一個ASPX頁面的輸出結果,然后將結果插入另一個ASPX頁面的特定位置,則使用Server.Execute。
12)如果要確保HTML輸出合法,請使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園