ASP.NET 網頁中的四種頁面跳轉技術的比較

來源:互聯網
上載者:User

一、三種跳轉方式

  1、response.redirect:這個跳轉頁面的方法跳轉的速度不快,因為它要走2個來回(2次postback),但他可以跳轉到任何頁面,沒有網站頁面限制(即可以由雅虎跳到新浪),同時不能跳過登入保護。但速度慢是其最大缺陷!
  redirect跳轉機制:首先是發送一個http請求到用戶端,通知需要跳轉到新頁面,然後用戶端在發送跳轉請求到伺服器端。需要注意的是跳轉後內部空間儲存的所有資料資訊將會丟失,所以需要用到session。

  順便提一下,如何使用redirect方法在查詢字串中使用漢字,因為經常的情況是出現亂碼,原因是url不支援漢字。這個時候需要轉換:
  string message =server.urlencode("歡迎來到微塵裡部落格");
先轉換,在使用查詢字串:
  response.redirect("webform2.aspx?msg="+message);

 

  2、server.transfer:速度快,只需要一次postback ,但是……他必須是在同一個網站下,因為它是server的一個方法。另外,他能跳過登入保護。
  你可以寫個小程式試試:設計一個由頁面一到頁面二的跳轉,但要進入到頁面二需要登入,form認證,但如果跳躍陳述式使用transfer的話,那就不會彈出登入頁面了。這個方法的重新導向請求是發生在伺服器端,所以瀏覽器的url地址仍然保留的是原頁面的地址!

  3、sever.execute:這個方法主要是用在頁面設計上面,而且他必須是跳轉同一網站下的頁面。這個方法是需要將一個頁面的輸出結果插入到另一個aspx頁面的時候使用,大部分是在表格中,將某一個頁面類似於嵌套的方式存在於另一頁面。

 

  二、在asp.net中有四種頁面跳轉導航方式,該如何為你的頁面選擇一個呢?

  ◆如果要讓使用者來決定何時轉換頁面以及轉到哪一個頁面,超級連結最適合。

  如果要用程式來控制轉換的目標,但轉換的時機由使用者決定,使用Web伺服器的HyperLink控制項,動態設定其NavigateUrl屬性。

  ◆如果要把使用者串連到另一台伺服器上的資源,使用Response.Redirect

  用Response.Redirect把使用者串連到非ASPX的資源,例如HTML頁面。

  如果要將查詢字串作為URL的一部分保留,使用Response.Redirect。

  ◆如果要將執行流程轉入同一Web伺服器的另一個ASPX頁面,應當使用Server.Transfer而不是Response.Redirect,因為Server.Transfer能夠避免不必要的網路通訊,從而獲得更好的效能和瀏覽效果。

  ◆如果要捕獲一個ASPX頁面的輸出結果,然後將結果插入另一個ASPX頁面的特定位置,則使用Server.Execute

  :如果要確保HTML輸出合法,請使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。

  三、關於Server.Execute

  這種頁面導航方式類似於針對ASPX頁面的一次函數調用,被調用的頁面能夠訪問發出調用頁面的表單資料和查詢字串集合,所以要把被調用頁面Page指令的EnableViewStateMac屬性設定成False。

  預設情況下,被調用頁面的輸出追加到當前應答流。但是,Server.Execute方法有一個重載的方法,允許通過一個TextWriter對象(或者它的子物件,例如StringWriter對象)擷取被調用頁面的輸出,而不是直接追加到輸出資料流,這樣,在原始頁面中可以方便地調整被調用頁面輸出結果的位置。

 

  附:asp.net實現從一個頁面跳轉到另一頁面方法的比較

  實現頁面跳轉的方法很多,除了伺服器控制項是asp.net封裝過外,其它在asp中也就有了。

  這麼多實現方法中,都是實現同樣的功能,為什麼還要支援如此多的方法呢,我們實際應用中到底應該選擇哪一種方法呢?也許我們大多數人都是需要用跳轉時,隨便想到一個便拿來用,從不去考慮它們會有不同,其實之前我也是這樣的,對他們沒有一個系統的瞭解是不能發揮它們各自的優勢的。好,現在讓我們來瞭解一下它們各自的用途吧。

  1、超連結

  這就不說了,最簡單的。

  2、伺服器控制項 HyperLink

  通過NavigateUrl屬性來指定要跳轉的url。主要用於由使用者來決定何時轉換頁面,但是用程式來控制轉換的目標。

  3、程式控制

  ① Response.Redirect()
  伺服器--------》通知用戶端----------》請求跳轉到伺服器端
  主要用於需要將查詢字串作為url的一部分傳遞給另一頁面,或跳轉的頁面是html頁面

  ② Server.Transfer()
  使用此方法最大的特點是url仍然是跳轉前的頁面的url。
  主要用於需要將執行流程轉到同一web伺服器的另一aspx頁面時用。因為它在跳轉後保留了request和session值,並且可以使用跳轉前頁面的資料。

  ③ Server.Execute()
  此方法執行完後程式控制權會返回到跳轉代碼的下一代碼,相當於我們的模態視窗,此時可以得到跳轉過頁面的傳回值。
  常用於輔助選擇操作,然後返回選擇後的值到當前頁面。

一、三種跳轉方式

  1、response.redirect:這個跳轉頁面的方法跳轉的速度不快,因為它要走2個來回(2次postback),但他可以跳轉到任何頁面,沒有網站頁面限制(即可以由雅虎跳到新浪),同時不能跳過登入保護。但速度慢是其最大缺陷!
  redirect跳轉機制:首先是發送一個http請求到用戶端,通知需要跳轉到新頁面,然後用戶端在發送跳轉請求到伺服器端。需要注意的是跳轉後內部空間儲存的所有資料資訊將會丟失,所以需要用到session。

  順便提一下,如何使用redirect方法在查詢字串中使用漢字,因為經常的情況是出現亂碼,原因是url不支援漢字。這個時候需要轉換:
  string message =server.urlencode("歡迎來到微塵裡部落格");
先轉換,在使用查詢字串:
  response.redirect("webform2.aspx?msg="+message);

 

  2、server.transfer:速度快,只需要一次postback ,但是……他必須是在同一個網站下,因為它是server的一個方法。另外,他能跳過登入保護。
  你可以寫個小程式試試:設計一個由頁面一到頁面二的跳轉,但要進入到頁面二需要登入,form認證,但如果跳躍陳述式使用transfer的話,那就不會彈出登入頁面了。這個方法的重新導向請求是發生在伺服器端,所以瀏覽器的url地址仍然保留的是原頁面的地址!

  3、sever.execute:這個方法主要是用在頁面設計上面,而且他必須是跳轉同一網站下的頁面。這個方法是需要將一個頁面的輸出結果插入到另一個aspx頁面的時候使用,大部分是在表格中,將某一個頁面類似於嵌套的方式存在於另一頁面。

 

  二、在asp.net中有四種頁面跳轉導航方式,該如何為你的頁面選擇一個呢?

  ◆如果要讓使用者來決定何時轉換頁面以及轉到哪一個頁面,超級連結最適合。

  如果要用程式來控制轉換的目標,但轉換的時機由使用者決定,使用Web伺服器的HyperLink控制項,動態設定其NavigateUrl屬性。

  ◆如果要把使用者串連到另一台伺服器上的資源,使用Response.Redirect

  用Response.Redirect把使用者串連到非ASPX的資源,例如HTML頁面。

  如果要將查詢字串作為URL的一部分保留,使用Response.Redirect。

  ◆如果要將執行流程轉入同一Web伺服器的另一個ASPX頁面,應當使用Server.Transfer而不是Response.Redirect,因為Server.Transfer能夠避免不必要的網路通訊,從而獲得更好的效能和瀏覽效果。

  ◆如果要捕獲一個ASPX頁面的輸出結果,然後將結果插入另一個ASPX頁面的特定位置,則使用Server.Execute

  :如果要確保HTML輸出合法,請使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。

  三、關於Server.Execute

  這種頁面導航方式類似於針對ASPX頁面的一次函數調用,被調用的頁面能夠訪問發出調用頁面的表單資料和查詢字串集合,所以要把被調用頁面Page指令的EnableViewStateMac屬性設定成False。

  預設情況下,被調用頁面的輸出追加到當前應答流。但是,Server.Execute方法有一個重載的方法,允許通過一個TextWriter對象(或者它的子物件,例如StringWriter對象)擷取被調用頁面的輸出,而不是直接追加到輸出資料流,這樣,在原始頁面中可以方便地調整被調用頁面輸出結果的位置。

 

  附:asp.net實現從一個頁面跳轉到另一頁面方法的比較

  實現頁面跳轉的方法很多,除了伺服器控制項是asp.net封裝過外,其它在asp中也就有了。

  這麼多實現方法中,都是實現同樣的功能,為什麼還要支援如此多的方法呢,我們實際應用中到底應該選擇哪一種方法呢?也許我們大多數人都是需要用跳轉時,隨便想到一個便拿來用,從不去考慮它們會有不同,其實之前我也是這樣的,對他們沒有一個系統的瞭解是不能發揮它們各自的優勢的。好,現在讓我們來瞭解一下它們各自的用途吧。

  1、超連結

  這就不說了,最簡單的。

  2、伺服器控制項 HyperLink

  通過NavigateUrl屬性來指定要跳轉的url。主要用於由使用者來決定何時轉換頁面,但是用程式來控制轉換的目標。

  3、程式控制

  ① Response.Redirect()
  伺服器--------》通知用戶端----------》請求跳轉到伺服器端
  主要用於需要將查詢字串作為url的一部分傳遞給另一頁面,或跳轉的頁面是html頁面

  ② Server.Transfer()
  使用此方法最大的特點是url仍然是跳轉前的頁面的url。
  主要用於需要將執行流程轉到同一web伺服器的另一aspx頁面時用。因為它在跳轉後保留了request和session值,並且可以使用跳轉前頁面的資料。

  ③ Server.Execute()
  此方法執行完後程式控制權會返回到跳轉代碼的下一代碼,相當於我們的模態視窗,此時可以得到跳轉過頁面的傳回值。
  常用於輔助選擇操作,然後返回選擇後的值到當前頁面。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.