ASP.NET 頁面跳轉的方法介紹


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("http://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方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM