上周隨手記下 Asp.net中Application Session Cookie ViewState Cache Hidden,本來感覺應該沒有什麼問題的,大家還是指出了遺漏甚至是錯誤的知識點,在此感謝一下園子裡的兄弟:aspnetx 書生 Zfphere,收穫不小。作為一種複習和梳理的方法,這一周我們繼續進行。本周的話題是:Asp.net的頁面轉向方法,這一次你看我數全了嗎?(有問題還是請拍磚)……
<a>標籤
1. <a href=”test.aspx”></a>
2. 這是最常見的一種轉向方法;
HyperLink控制項
1. Asp.net 伺服器端控制項 屬性NavigateUrl指定要跳轉到的Url地址
2. NavigateUrl是可以在伺服器端使用代碼修改,這個區別於<a>
3. 由於HyperLink本身沒有事件所以要在伺服器端其它事件中設定NavigateUrl
4. 程式碼範例
<Asp:HyperLink id=”hyperlink” runat=”server” NavigatoeUrl=”test.aspx”>ok</Asp:HyperLink>
Response.Redirect()方法
1. 過程:發送一個Http響應到用戶端,通知用戶端跳轉到一個新的頁面,然後用戶端再發送跳轉請求到伺服器端。
2. 頁面跳轉之後內部控制項儲存的所有資訊丟失,當A跳轉到B,B頁面將不能訪問A頁面提交的資料資訊。
3. 使用這個方法使用這個方法跳轉後瀏覽器地址欄的Url資訊改變
4. 可以使用Session Cookies Application等對象進行頁面間的資料傳遞
5. 重新導向操作發生在用戶端,總共涉及到兩次與Web伺服器的通訊:一次是對原始頁面的請求,另一次是重新導向新頁面的請求
Server.Transfer()方法
1. 實現頁面跳轉的同時將頁面的控制權進行移交
2. 頁面跳轉過程中Request Session等儲存的資訊不變,跳轉之後可以使用上一個頁面提交的資料
3. 跳轉之後瀏覽器地址欄的Url不變
4. 這種方法的重新導向請求是在伺服器端的進行的,瀏覽器不知道頁面已經發生了一次跳轉
Server.Execute()方法
1. 該方法允許當前頁面執行同一個Web伺服器上的另一個頁面
2. 頁面執行完畢之後重新回到原始頁面發出Server.Execute()的位置。
3. 這種方式類似針對頁面的一次函數調用 被請求的頁面可以使用原始頁面的表單資料和查詢字串集合
4. 被調用頁面的Page指令的EnableViewStateMac屬性設定為False
話題相關:
1. 為了確保HTML輸出的合法性 最好使用Response.Redirect方法;因為Server.Execute 或者Server.Transfer方法返回給用戶端的頁麵包含多個<Html><body>標記,不是合法的HTML頁面,在非IE瀏覽器中可能會發生錯誤。
2. 由於Server.Transfer在伺服器端執行重新導向,所以避免了不必要的網路通訊,從而獲得了更好的效能和瀏覽效果
發表於 2007-07-09 07:26 堅強2002 閱讀(315) 評論(6) 編輯 收藏 引用 網摘 所屬分類: 知識積累
評論 # re: 隨手記下 Asp.net 5種頁面轉向方法 HyperLink對比a的最大好處是支援ResolveUrl。a其實也可以runat="server",雖然感覺有點怪,但至少可以在伺服器端對它進行一般控制項都能進行的賦值和資料繫結操作,然而ResolveUrl則是它布局別的,如果要用"~/Default.aspx"這樣的路徑則最好用HyperLink。Cat Chen 評論於 2007-07-09 08:07 回複 更多評論 # re: 隨手記下 Asp.net 5種頁面轉向方法 Server.Execute和Server.Transfer視乎你怎麼用,通常調用之前都應該Response.Clear()清除之前的輸出,調用之後Response.Flush()和Response.End()結束處理。Cat Chen 評論於 2007-07-09 08:08 回複 更多評論 # re: 隨手記下 Asp.net 5種頁面轉向方法 還有一個小方法
Response.write("<script language=javascript>history.go(-2);</script>)
Response.write("<script language=javascript>history.back();</script>)
剛剛學來的