Hopes

          Start Here..

           

          ASP.net頁面跳轉(zhuǎn)方式比較(轉(zhuǎn)載)

          ASP.net頁面跳轉(zhuǎn)方式比較(轉(zhuǎn)載)

          上一篇 / 下一篇  2007-08-22 00:00:00 / 個人分類:網(wǎng)頁編程

          查看( 1179 ) / 評論( 20 ) / 評分( 79 / 8 )
          ASP.net頁面跳轉(zhuǎn)方式比較(轉(zhuǎn)載)

          1 response.redirect 這個跳轉(zhuǎn)頁面的方法跳轉(zhuǎn)的速度不快,因為它要走2個來回(2次postback),但他可以跳 轉(zhuǎn)到任何頁面,沒有站點頁面限制(即可以由雅虎跳到新浪),同時不能跳過登錄保護。但速度慢是其最大缺陷!redirect跳轉(zhuǎn)機制:首先是發(fā)送一個http請求到客戶端,通知需要跳轉(zhuǎn)到新頁面,然后客戶端在發(fā)送跳轉(zhuǎn)請求到服務(wù)器端。需要注意的是跳轉(zhuǎn)后內(nèi)部空間保存的所有數(shù)據(jù)信息將會丟失,所以需要用到session。

          2 server.transfer 速度快,只需要一次postback ,但是。。。。他必須是在同一個站點下,因為它是server的一個方法。另外,他能跳過登錄保護。你可以寫個小程序試試:設(shè)計一個由頁面一到頁面二的跳轉(zhuǎn),但要進入到頁面二需要登錄,form認證,但如果跳轉(zhuǎn)語句使用transfer的話,那就不會彈出登錄頁面了。這個方法的重定向請求是發(fā)生在服務(wù)器端,所以瀏覽器的url地址仍然保留的是原頁面的地址!

          3 sever.execute 這個方法主要是用在頁面設(shè)計上面,而且他必須是跳轉(zhuǎn)同一站點下的頁面。這個方法是需要將一個頁面的輸出結(jié)果插入到另一個aspx頁面的時候使用,大部分是在表格中,將某一個頁面類似于嵌套的方式存在于另一頁面。

          總結(jié):

          當需要把用戶跳轉(zhuǎn)到另一臺服務(wù)器上的頁面的時候 使用redirect

          當需要把用戶跳轉(zhuǎn)到非aspx頁面時候,如html 使用redirect

          需要把查詢字符串作為url一部分的時候保留傳給服務(wù)器的時候,因為其他2種方法不能做到2次postback,把數(shù)據(jù)先帶回服務(wù)器 使用redirect

          需要aspx頁面間的轉(zhuǎn)換(不涉及登錄) 使用transfer

          當需要把aspx頁面的輸出結(jié)果插入到另一個aspx頁面的時候使用 execute方法。

          當然,忘記了還有一個超鏈接!當然這個就不需要講太多了。他是在黨需要用戶來決定什么時候跳轉(zhuǎn)頁面,就使用超鏈接。

          順便提一下,如何使用redirect方法在查詢字符串中使用漢字,因為經(jīng)常的情況是出現(xiàn)亂碼,原因是url不支持漢字。這個時候需要轉(zhuǎn)換:

          string message =server.urlencode("歡迎來到賽跑專欄");

          先轉(zhuǎn)換,在使用查詢字符串

          response.redirect("webform2.aspx?msg="+message);

          asp.net實現(xiàn)從一個頁面跳轉(zhuǎn)到另一頁面方法的比較

          實現(xiàn)頁面跳轉(zhuǎn)的方法很多,除了服務(wù)器控件是asp.net封裝過外,其它在asp中也就有了。 
          這么多實現(xiàn)方法中,都是實現(xiàn)同樣的功能,為什么還要支持如此多的方法呢,我們實際應(yīng)用 
          中到底應(yīng)該選擇哪一種方法呢?也許我們大多數(shù)人都是需要用跳轉(zhuǎn)時,隨便想到一個便拿來用, 
          從不去考慮它們會有不同,其實之前我也是這樣的,對他們沒有一個系統(tǒng)的了解是不能發(fā)揮它 
          們各自的優(yōu)勢的。好,現(xiàn)在讓我們來了解一下它們各自的用途吧 
          一、超鍵接 
          這就不說了,最簡單的。 
          二、服務(wù)器控件 
          HyperLink 
          通過NavigateUrl屬性來指定要跳轉(zhuǎn)的url。 
          主要用于由用戶來決定何時轉(zhuǎn)換頁面,但是用程序來控制轉(zhuǎn)換的目標。 
          三、程序控制 
          1、Response.Redirect() 
          服務(wù)器--------》通知客戶端----------》請求跳轉(zhuǎn)到服務(wù)器端 
          主要用于需要將查詢字符串作為url的一部分傳遞給另一頁面,或跳轉(zhuǎn)的頁面是html頁面 
          2、Server.Transfer() 
          使用此方法最大的特點是url仍然是跳轉(zhuǎn)前的頁面的url。 
          主要用于需要將執(zhí)行流程轉(zhuǎn)到同一web服務(wù)器的另一aspx頁面時用。因為它在跳轉(zhuǎn)后保留了 
          request和session值,并且可以使用跳轉(zhuǎn)前頁面的數(shù)據(jù)。 
          3、Server.Execute() 
          此方法執(zhí)行完后程序控制權(quán)會返回到跳轉(zhuǎn)代碼的下一代碼,相當于我們的模態(tài)窗口,此時可以得到 
          跳轉(zhuǎn)過頁面的返回值。 
          常 用于輔助選擇操作,然后返回選擇后的值到當前頁面。 
          有了上面的介紹,我們就應(yīng)該選擇適當?shù)臅r候用不同的跳轉(zhuǎn)方法。

          asp.net網(wǎng)頁中的四種頁面跳轉(zhuǎn)技術(shù)的比較

          在asp.net中有四種頁面跳轉(zhuǎn)導(dǎo)航方式,該如何為你的頁面選擇一個呢?

          ·如果要讓用戶來決定何時轉(zhuǎn)換頁面以及轉(zhuǎn)到哪一個頁面,超級鏈接最適合。

          ·如果要用程序來控制轉(zhuǎn)換的目標,但轉(zhuǎn)換的時機由用戶決定,使用Web服務(wù)器的HyperLink控件,動態(tài)設(shè)置其NavigateUrl屬性。

          ·如果要把用戶連接到另一臺服務(wù)器上的資源,使用Response.Redirect。

          ·用Response.Redirect把用戶連接到非ASPX的資源,例如HTML頁面。

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

          ·如果要將執(zhí)行流程轉(zhuǎn)入同一Web服務(wù)器的另一個ASPX頁面,應(yīng)當使用Server.Transfer而不是Response.Redirect,因為Server.Transfer能夠避免不必要的網(wǎng)絡(luò)通信,從而獲得更好的性能和瀏覽效果。

          ·如果要捕獲一個ASPX頁面的輸出結(jié)果,然后將結(jié)果插入另一個ASPX頁面的特定位置,則使用Server.Execute。

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

          關(guān)于Server.Execute,

          這種頁面導(dǎo)航方式類似于針對ASPX頁面的一次函數(shù)調(diào)用,被調(diào)用的頁面能夠訪問發(fā)出調(diào)用頁面的表單數(shù)據(jù)和查詢字符串集合,所以要把被調(diào)用頁面Page指令的EnableViewStateMac屬性設(shè)置成False。

          默認情況下,被調(diào)用頁面的輸出追加到當前應(yīng)答流。但是,Server.Execute方法有一個重載的方法,允許通過一個TextWriter對象(或者它的子對象,例如StringWriter對象)獲取被調(diào)用頁面的輸出,而不是直接追加到輸出流,這樣,在原始頁面中可以方便地調(diào)整被調(diào)用頁面輸出結(jié)果的位置。

          posted on 2012-08-15 15:00 ** 閱讀(209) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          導(dǎo)航

          統(tǒng)計

          公告

          你好!

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊

          收藏夾

          C#學習

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 昌江| 桐庐县| 甘洛县| 灵台县| 金堂县| 攀枝花市| 白城市| 璧山县| 临汾市| 尚志市| 建瓯市| 永吉县| 赤峰市| 隆子县| 马龙县| 荔浦县| 洛阳市| 金寨县| 磐石市| 永昌县| 高唐县| 凉城县| 南华县| 文成县| 久治县| 鸡东县| 丁青县| 鄂托克前旗| 平凉市| 通榆县| 民乐县| 土默特右旗| 永清县| 涟水县| 新余市| 庆元县| 上蔡县| 都江堰市| 墨竹工卡县| 新建县| 岢岚县|