asp教程.net頁面跳轉的多種方法
////加密 //byte[] bb=Encoding.UTF8.GetBytes("aaa"); //string cc = Convert.ToBase64String(bb);
////解密 //byte[] bb1 = Convert.FromBase64String(cc); //string cc1 = Encoding.GetEncoding("gb2312").GetString(bb1);
用超連結提交表單
在form中加上id="form1",<form id="form1" action=''.."
<script>
function f(){var form1 = document.getElementById("form1");
form1.submit();}
</script>
<a href="#" onclick="f()">提交</a>.
加密:隱藏IE的地址欄和功能表列隱藏IE的地址欄可以將該網頁的URL隱藏起來,這樣,即使使用者看到源檔案,就不太容易將HTML源檔案中的圖片的相對位址轉換成絕對位址。隱藏IE的功能表列,這個和禁用滑鼠右鍵配合使用,使得瀏覽者沒辦法查看到源檔案,這樣網頁代碼的保密性就大大加強了。加密方法:對於重要的網頁,如果是用超連結開啟的,我們不用普通的超連結代碼,像“<A href=“URL地址”>連結提示說明</A>”。我們通過JavaScript裡的window.open這個函數開啟要加密的頁面,通過適當設定參數以達到隱藏IE地址欄和功能表列的目的,用window.open這個函數可以定製快顯視窗,如定製這個彈出的視窗的外觀,尺寸大小,彈出的位置以適應該頁面的具體情況,請看下面程式碼範例
<a href=# onClick=”window.open ('main.htm', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no')” >說明:上面的要寫成一行 參數解釋: window.open 彈出新視窗的命令; 'page.html' 快顯視窗的檔案名稱; 'newwindow' 快顯視窗的名字(不是檔案名稱),非必須,可用空''代替; height=100 視窗高度; width=400 視窗寬度; top=0 視窗距離螢幕上方的象素值; left=0 視窗距離螢幕左側的象素值; toolbar=no 是否顯示工具列,yes為顯示; menubar,scrollbars 表示功能表列和滾動欄。 resizable=no 是否允許改變視窗大小,yes為允許; location=no 是否顯示地址欄,yes為允許; status=no 是否顯示狀態列內的資訊(通常是檔案已經開啟),yes為允許;
由此看來,我們可以這樣設定參數:location=no;menubar=no,以達到隱藏地址欄和功能表列的目的。(三)解密:上面所說的方法,還是有一個不足之處,雖然已經隱藏了IE的地址欄和功能表列,瀏覽者看不到當前網頁的URL地址,但如果沒有禁用CTRL鍵的話,瀏覽者只要按一下“CTRL+N”就可以在新的視窗開啟同樣的該網頁,這時,IE視窗的地址欄和菜單沒有隱藏的!所以,上面的加密方法,如果想做得保密性更強一些,還必須使瀏覽者按下的CTRL鍵失效。
另外,使用騰訊的瀏覽器,可以解除網頁代碼中用window.open開啟新視窗隱藏IE地址欄和功能表列的限制。
1 Response.Redirect 這個跳轉頁面的方法跳轉的速度不快,因為它要走2個來回(2次postback),但他可以跳 轉到任何頁面,沒有網站頁面限制(即可以由雅虎跳到新浪),同時不能跳過登入保護。但速度慢是其最大缺陷!Redirect跳轉機制:首先是發送一個http請求到用戶端,通知需要跳轉到新頁面,然後用戶端在發送跳轉請求到伺服器端。需要注意的是跳轉後內部空間儲存的所有資料資訊將會丟失,所以需要用到session。
2 Server.Rransfer 速度快,只需要一次postback ,但是。。。。他必須是在同一個網站下,因為它是server的一個方法。另外,他能跳過登入保護。你可以寫個小程式試試:設計一個由頁面一到頁面二的跳轉,但要進入到頁面二需要登入,form認證,但如果跳躍陳述式使用transfer的話,那就不會彈出登入頁面了。這個方法的重新導向請求是發生在伺服器端,所以瀏覽器的url地址仍然保留的是原頁面的地址!
3 Sever.Execute 這個方法主要是用在頁面設計上面,而且他必須是跳轉同一網站下的頁面。這個方法是需要將一個頁面的輸出結果插入到另一個aspx頁面的時候使用,大部分是在表格中,將某一個頁面類似於嵌套的方式存在於另一頁面。
總結:
1. Server.Transfer只能夠轉跳到本地虛擬目錄指定的頁面,而Response.Redirect則十分靈活;
2. Server.Transfer可以將頁面參數方便傳遞到指定頁面;
3. 使用時,Server.Transfer跳到別的頁面後,瀏覽器顯示的地址不會改變,有時反而會造成誤會,當然也有些場合需要這樣的效果;
4. Server.Transfer可以減少用戶端對伺服器的請求;
2. response.redirect其實上是當伺服器碰到這條語句時發送一條指令(包含新的地址)給瀏覽器,然後讓瀏覽器去發送http請求,請求response.redirect後面的那個新的http地址,流程如下:
瀏覽器ASP檔案請求->伺服器執行->遇到response.redirect語句->伺服器發送response.redirect後面的地址給客戶機端的瀏覽器->瀏覽器請求執行新的地址(伺服器返回的Response.Redirect後面的地址)這就是一個小小的Response.Redirect的全部過程,不看不知道,一看嚇一條!它有這麼多的過程,真恐怖... ...,而ASP3.0中的Server.Transfer語句當接受地址後是直接轉向後面的地址,流程如下:
瀏覽器ASP檔案請求->伺服器執行->遇到Server.Transfer語句->伺服器轉向新的檔案。
Server.Transfer方法與Redirect方法相比另一個顯著的優勢是在頁面轉換時,Request集合裡的內容不會丟失,這給我們編程帶來很大的方便(具體的例子我就不舉了,^_^)。
一般的情況下儘可能用Server.Transfer方法(前提是伺服器是IIS),Server.Transfer方法更快速,而且因為只在伺服器上執行,所以可以和任何瀏覽器安全色。
當需要把使用者跳轉到另一台伺服器上的頁面的時候 使用redirect
當需要把使用者跳轉到非aspx頁面時候,如html 使用redirect
需要把查詢字串作為url一部分的時候保留傳給伺服器的時候,因為其他2種方法不能做到2次postback,把資料先帶回伺服器 使用redirect
需要aspx頁面間的轉換(不涉及登入) 使用transfer
當需要把aspx頁面的輸出結果插入到另一個aspx頁面的時候使用 execute方法。
當然,忘記了還有一個超連結!當然這個就不需要講太多了。他是在當需要使用者來決定什麼時候跳轉頁面,就使用超連結。
順便提一下,如何使用redirect方法在查詢字串中使用漢字,因為經常的情況是出現亂碼,原因是url不支援漢字。這個時候需要轉換:
string message =server.urlencode("歡迎來到賽跑專欄");
先轉換,在使用查詢字串
response.redirect("webform2.aspx?msg="+message);
Asp.Net實現從一個頁面跳轉到另一頁面方法的比較
實現頁面跳轉的方法很多,除了伺服器控制項是asp.net教程封裝過外,其它在asp中也就有了。
這麼多實現方法中,都是實現同樣的功能,為什麼還要支援如此多的方法呢,我們實際應用
中到底應該選擇哪一種方法呢?也許我們大多數人都是需要用跳轉時,隨便想到一個便拿來用,
從不去考慮它們會有不同,其實之前我也是這樣的,對他們沒有一個系統的瞭解是不能發揮它
們各自的優勢的。好,現在讓我們來瞭解一下它們各自的用途吧
一、超鍵接
這就不說了,最簡單的。
二、伺服器控制項
HyperLink
通過NavigateUrl屬性來指定要跳轉的url。
主要用於由使用者來決定何時轉換頁面,但是用程式來控制轉換的目標。
三、程式控制
1、Response.Redirect()
伺服器--------》通知用戶端----------》請求跳轉到伺服器端
主要用於需要將查詢字串作為url的一部分傳遞給另一頁面,或跳轉的頁面是html頁面
2、Server.Transfer()
使用此方法最大的特點是url仍然是跳轉前的頁面的url。
主要用於需要將執行流程轉到同一web伺服器的另一aspx頁面時用。因為它在跳轉後保留了
request和session值,並且可以使用跳轉前頁面的資料。
3、Server.Execute()
此方法執行完後程式控制權會返回到跳轉代碼的下一代碼,相當於我們的模態視窗,此時可以得到
跳轉過頁面的傳回值。 常用於輔助選擇操作,然後返回選擇後的值到當前頁面。
有了上面的介紹,我們就應該選擇適當的時候用不同的跳轉方法。
asp.net網頁中的四種頁面跳轉技術的比較
在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。