一、<a>標簽
<a href=”test.aspx”></a>
這是最常見的一種轉向方法
二、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服務器的通信:一次是對原始頁面的請求,另一次是重定向新頁面的
請求
Response.Redirect("Default.aspx");
四、Server.Transfer()方法
1. 實現頁面跳轉的同時將頁面的控制權進行移交
2. 頁面跳轉過程中Request Session等保存的信息不變,跳轉之后可以使用上一個頁面提交的數據
3. 跳轉之后瀏覽器地址欄的Url不變
4. 這種方法的重定向請求是在服務器端的進行的,瀏覽器不知道頁面已經發生了一次跳轉
Server.Transfer("Default.aspx");
五、Server.Execute()方法
1. 該方法允許當前頁面執行同一個Web服務器上的另一個頁面
2. 頁面執行完畢之后重新回到原始頁面發出Server.Execute()的位置。
3. 這種方式類似針對頁面的一次函數調用 被請求的頁面可以使用原始頁面的表單數據和查詢字符串集合
4. 被調用頁面的Page指令的EnableViewStateMac屬性設置為False
string str = "<script language=javascript>history.go(-2);</script>"; Response.Write(str);
PS:
1. 為了確保HTML輸出的合法性 最好使用Response.Redirect方法;因為Server.Execute 或者Server.Transfer方法返回給客戶端的頁面包含多個<Html><body>標記,不是合法的HTML頁面,在 非IE瀏覽器中可能會發生錯誤。
2. 由於Server.Transfer在服務器端執行重定向,所以避免了不必要的網絡通信,從而獲得了更好的性能和瀏覽效果。
打開新界面:
Response.Write(" <script> window.open( 'Default.aspx '); </script> ");
各種js頁面跳轉代碼
第一種:
Javascript代碼
<script language="javascript" type="text/javascript"> window.location.href="login.jsp?backurl="+window.location.href; </script> <script language="javascript" type="text/javascript"> window.location.href="login.jsp?backurl="+window.location.href; </script>
第二種:
<script language="javascript"> alert("返回"); window.history.back(-1); </script> <script language="javascript"> alert("返回"); window.history.back(-1); </script>
<script language="javascript"> window.navigate("top.jsp"); </script> <script language="javascript"> window.navigate("top.jsp"); </script>
Response.Write(" <script language=javascript> window.navigate('Default.aspx'); </script> ");
第四種:
<script language="JavaScript"> self.location=’top.htm’; </script>
第五種:
<script language="javascript"> alert("非法訪問!"); top.location=’xx.jsp’; </script> <script language="javascript"> alert("非法訪問!"); top.location=’xx.jsp’; </script>
=====javascript中彈出選擇框跳轉到其他頁面=====
<script language="javascript"> <!-- function logout()...{ if (confirm("你確定要注銷身份嗎?是-選擇確定,否-選擇取消"))...{ window.location.href="logout.asp?act=logout" } } --> </script> <script language="javascript"> <!-- function logout()...{ if (confirm("你確定要注銷身份嗎?是-選擇確定,否-選擇取消"))...{ window.location.href="logout.asp?act=logout" } } --> </script>
=====javascript中彈出提示框跳轉到其他頁面=====
<script language="javascript"> <!-- function logout()...{ alert("你確定要注銷身份嗎?"); window.location.href="logout.asp?act=logout" } --> </script> <script language="javascript"> <!-- function logout()...{ alert("你確定要注銷身份嗎?"); window.location.href="logout.asp?act=logout" } --> </script>
后退一頁
<input type="button" value="返回" onClick="javascript: history.go(-1)">
前進一頁:
刷新(當前頁加載url頁面):
刷新(頂級框架加載url頁面):
框架刷新
"javaScript:window.parent.frames.manframe.location.reload()"
頁面跳轉
近期在學習高手的一個項目,頁面跳轉用了好多方法,搞得我焦頭爛額,在高手的指點下,終於搞明白了:
頁面跳轉一般分為兩大類:服務器端跳轉和客戶端跳轉,其一般的形式為:
Response.Redirect(
"
WebForm1.aspx
"
);
Response.End();

<
script language
=
"
javascript
"
type
=
"
text/javascript
"
>
window.location.href
=
"
WebForm1.aspx
"
;;
</
script
>
<
meta http
-
equiv
=
"
refresh
"
content
=
"
3
"
; url
=
"
WebForm1.aspx
"
>
(3秒鍾后自動跳轉到WebForm1.aspx頁面)
以上是實現頁面跳轉的基本方法,現在來看一個例子:我們定義一個頁面,頁面Html如下:
<
body
>
<
form id
=
"
form1
"
runat
=
"
server
"
>
<
div
>
<
asp:Button ID
=
"
Button1
"
runat
=
"
server
"
Text
=
"
JS跳轉
"
OnClick
=
"
Button1_Click
"
/>
<
asp:Button ID
=
"
Button2
"
runat
=
"
server
"
Text
=
"
CS跳轉
"
OnClick
=
"
Button2_Click
"
/>
</
div
>
</
form
>
</
body
>
在頁面中我定義了兩個跳轉按鈕,其后台代碼如下:
protected void Button1_Click(object sender, EventArgs e)
{
Js_ShowMessage("我要跳轉了");
Js_Redirect("WebForm1.aspx");
}

protected void Button2_Click(object sender, EventArgs e)
{
Js_ShowMessage("我要跳轉了");
Response.Redirect("WebForm1.aspx");
}
private void Js_ShowMessage( string message)
{
Response.Write("<script language=javascript>alert(\"" + message.Replace("\r\n", "\\n") + "\")</script>");
}
private void Js_Redirect(string url)
{
Response.Write("<script language=javascript>window.location.href='" + url + "'</script>");
}
這兩種跳轉會有什么差別呢?通過執行代碼,當觸發Button1的click事件時,頁面是先顯示了一段信息(“我要跳轉了”)后,跳轉到別的頁面,而觸 發Button2的click事件的時候,頁面直接跳轉,並沒有顯示我們所要求的信息。這是為什么呢?我們明明是要求在顯示一段信息后,在跳轉的阿。
原來,用Response.Redirect實現頁面跳轉的時候,客戶段僅僅是讀取了服務器端發送頁面的頭部,便執行了跳轉,並沒有執行頁面中的JS代 碼,因此沒有顯示我們所要求顯示的信息。二用JS跳轉,客戶段執行了服務器端發送的頁面的js代碼,因此是先顯示了一段代碼后,再實現的跳轉。
由此我們可以看出,用Response.Redirect實現頁面跳轉,比用JS要節省資源。因此我們在后台執行一段代碼后要求頁面跳轉的時候,盡量用Response.Redirect實現頁面跳轉。
但是,有這么一種情況:我要刪除某一項信息,刪除完畢后,我要求先提示一段信息,告訴我信息刪除完畢,然后在跳轉到別的頁面。這時,用Response.Redirect顯然是不能實現的,只能用JS實現頁面的跳轉。
總結:在后台執行一段代碼后要求頁面跳轉的時候,用Response.Redirect實現頁面跳轉。
在后台執行一段代碼,並顯示一條提示信息后要求頁面跳轉的時候,用Response.Redirect實現頁面跳轉。
這里在討論下button控件的onClientClick事件:如下代碼:
<
asp:Button ID
=
"
Button2
"
runat
=
"
server
"
Text
=
"
CS跳轉
"
OnClick
=
"
Button2_Click
"
OnClientClick
=
"
alert('我要跳轉了');return true;
"
/>
<
asp:Button ID
=
"
Button2
"
runat
=
"
server
"
Text
=
"
CS跳轉
"
OnClick
=
"
Button2_Click
"
OnClientClick
=
"
alert('我要跳轉了');return false;
"
/>
在onClientClick()事件中,return false 和return true 有什么區別呢?通過執行代碼,可以知道:
當return false時,並不執行頁面的后台代碼。
當return true 時,是要執行頁面的后台代碼的。
這和js中的Confirm對話框是一樣的。
這樣,我們要求先顯示一段信息,再執行一段后台代碼,在實現頁面跳轉的時候,可以在Button加上onClientClick事件。
頁面跳轉一般分為兩大類:服務器端跳轉和客戶端跳轉,其一般的形式為:
如果你要在服務器端跳轉,可以這樣:
Response.Redirect(
"
WebForm1.aspx
"
);
Response.End();
如果你要在客戶端跳轉,可以這樣:
<
script language
=
"
javascript
"
type
=
"
text/javascript
"
>
window.location.href
=
"
WebForm1.aspx
"
;;
</
script
>
如果你要讓頁面顯示幾秒鍾之后跳轉,可以在html代碼的<head></head>部分加上這樣的代碼:
<
meta http
-
equiv
=
"
refresh
"
content
=
"
3
"
; url
=
"
WebForm1.aspx
"
>
以上是實現頁面跳轉的基本方法,現在來看一個例子:我們定義一個頁面,頁面Html如下:
<
body
>
<
form id
=
"
form1
"
runat
=
"
server
"
>
<
div
>
<
asp:Button ID
=
"
Button1
"
runat
=
"
server
"
Text
=
"
JS跳轉
"
OnClick
=
"
Button1_Click
"
/>
<
asp:Button ID
=
"
Button2
"
runat
=
"
server
"
Text
=
"
CS跳轉
"
OnClick
=
"
Button2_Click
"
/>
</
div
>
</
form
>
</
body
>
在頁面中我定義了兩個跳轉按鈕,其后台代碼如下:
protected void Button1_Click(object sender, EventArgs e)
{
Js_ShowMessage("我要跳轉了");
Js_Redirect("WebForm1.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
Js_ShowMessage("我要跳轉了");
Response.Redirect("WebForm1.aspx");
}
private void Js_ShowMessage( string message)
{
Response.Write("<script language=javascript>alert(\"" + message.Replace("\r\n", "\\n") + "\")</script>");
}
private void Js_Redirect(string url)
{
Response.Write("<script language=javascript>window.location.href='" + url + "'</script>");
}
這兩種跳轉會有什么差別呢?通過執行代碼,當觸發Button1的click事件時,頁面是先顯示了一段信息(“我要跳轉了”)后,跳轉到別的頁面,而觸 發Button2的click事件的時候,頁面直接跳轉,並沒有顯示我們所要求的信息。這是為什么呢?我們明明是要求在顯示一段信息后,在跳轉的阿。
原來,用Response.Redirect實現頁面跳轉的時候,客戶段僅僅是讀取了服務器端發送頁面的頭部,便執行了跳轉,並沒有執行頁面中的JS代 碼,因此沒有顯示我們所要求顯示的信息。二用JS跳轉,客戶段執行了服務器端發送的頁面的js代碼,因此是先顯示了一段代碼后,再實現的跳轉。
由此我們可以看出,用Response.Redirect實現頁面跳轉,比用JS要節省資源。因此我們在后台執行一段代碼后要求頁面跳轉的時候,盡量用Response.Redirect實現頁面跳轉。
但是,有這么一種情況:我要刪除某一項信息,刪除完畢后,我要求先提示一段信息,告訴我信息刪除完畢,然后在跳轉到別的頁面。這時,用Response.Redirect顯然是不能實現的,只能用JS實現頁面的跳轉。
總結:在后台執行一段代碼后要求頁面跳轉的時候,用Response.Redirect實現頁面跳轉。
在后台執行一段代碼,並顯示一條提示信息后要求頁面跳轉的時候,用Response.Redirect實現頁面跳轉。
這里在討論下button控件的onClientClick事件:如下代碼:
<
asp:Button ID
=
"
Button2
"
runat
=
"
server
"
Text
=
"
CS跳轉
"
OnClick
=
"
Button2_Click
"
OnClientClick
=
"
alert('我要跳轉了');return true;
"
/>
<
asp:Button ID
=
"
Button2
"
runat
=
"
server
"
Text
=
"
CS跳轉
"
OnClick
=
"
Button2_Click
"
OnClientClick
=
"
alert('我要跳轉了');return false;
"
/>
當return false時,並不執行頁面的后台代碼。
當return true 時,是要執行頁面的后台代碼的。
這和js中的Confirm對話框是一樣的。
這樣,我們要求先顯示一段信息,再執行一段后台代碼,在實現頁面跳轉的時候,可以在Button加上onClientClick事件。
(PS:各種轉)
