實現頁面跳轉有兩種方法: 利用控件 、利用編程。
1.HyperLink 服務器控件
Html和ASP中,我們經常用<a href=target.ASP>目標</a>方式實現頁面的跳轉,在ASP.Net中仍可用此方法,另外還可用HyperLink服務控件代替,如下:
<form id="form1" runat="server">
<div>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="target.aspx">目標</ASP:HyperLink></div>
</form>
上述兩種方法實現結果一樣,但是有一點重要區別,HyperLink服務器控件可以在服務器端編程,目標頁可以根據當前的狀態進行動態的變化.
注: HyperLink控件本身沒有事件,因此只能在其他事件中設置NavigateUrl屬性,例如:Page_Load.
2.編程
HyperLink實現從一頁面到另一頁面的跳轉的方式是完全由用戶控制跳轉時機的,如果在跳轉之前添加條件判斷,使用編程實現比較方便.
使用代碼實現頁面跳轉的方法有: Response.Redirect, Server.Transfer,Server.Execute
(1)Response.Redirect
從頁面A跳轉到頁面B,內部控件保存的所有數據信息將丟失,因此頁面B無法訪問頁面A提交的數據,跳轉後浏覽器的URL信息改變,但是可以通過Session,CookIE,Application等對象進行頁面間的數據傳遞.
Response.Redirect重定向操作發生在客戶端,總共會涉及到兩次與Web服務器的通訊.
(2)Server.Transfer
頁面A跳轉到頁面B,同時頁面處理的控制權也進行移交,在跳轉過程中Request,Session等保存的信息不變,浏覽器的URL仍保存A的URL信息.
Server.Transfer的重定向請求在服務器端進行,客戶端不知曉服務器執行了頁面轉換,因此URL保持不變.
(3)Server.Execute
Server.Execute 方法允許當前頁面執行同一Web服務器上的另一頁面,當另一頁面執行完畢後,控制流程重新返回到原頁面發出Server.Execute 調用的位置,被調用頁面Page指令的EnableVIEwStateMac屬性需要設置為False;
跳轉方式的選擇:
HyperLink 服務器控件---------用戶決定何時轉換,用戶決定轉換的時機
Response.Redirect------需要鏈接到另一台服務器的情況,需要鏈接到非ASPx類型的頁面的時候,需要將查詢字符串作為URL一部分保留的情況
Server.Transfer-------同一台服務器之間Web頁面的跳轉,用Server.Transfer會避免不必要的網絡通訊,