頁面跳轉


一、<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>


第二種:    

Javascript代碼
    <script language="javascript">   
    alert("返回");   
    window.history.back(-1);       
    </script>  

<script language="javascript"> alert("返回"); window.history.back(-1);    </script>
第三種:   
Javascript代碼
    <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> 


第五種:   

Javascript代碼
    <script language="javascript">              
    alert("非法訪問!");              
    top.location=’xx.jsp’;       
    </script>   

<script language="javascript">           alert("非法訪問!");           top.location=’xx.jsp’;    </script>


=====javascript中彈出選擇框跳轉到其他頁面=====

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中彈出提示框跳轉到其他頁面=====
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>


后退一頁

Html代碼
<input type="button" value="返回" onClick="javascript: history.go(-1)">


前進一頁:

Html代碼
<a href="javascript:history.go(+1)">Go Foward</a>

刷新(當前頁加載url頁面):

Javascript代碼
window.location.href=url

刷新(頂級框架加載url頁面):

Javascript代碼
top.location.href=url


框架刷新

Html代碼
 
"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 >

如果你要讓頁面顯示幾秒鍾之后跳轉,可以在html代碼的<head></head>部分加上這樣的代碼:

< 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事件。

 
(PS:各種轉)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM