使用框架頁面的跳轉

        在Asp.NET使用框架頁面的時候,常常在框架內部頁面中進行跳轉,但是我們常常也會遇到這樣的一種情況:即我們需要跳轉的不只是部分框架的頁面,而是將整個主頁面進行跳轉,比如在框架左側頁面中操作的時候,需要跳轉到登陸頁面等等。

       這種情況下的跳轉其實跟HTML中進行主框架的跳轉是一樣的,在早期使用HTML的時候,我們使用Javascript,在Asp.net中,後臺代碼可以爲:

     Response.Write("<script>parent.location='login.apsx';</script>");   
     Response.Write("<script>top.location='login.apsx';</script>");   
     Response.Write("<script>parent.document.location.href='login.apsx';</script>");

那當我們不僅需要轉移框架頁面,還需要傳遞參數,那麼傳參跳轉的語句顯然既可以使用QueryString在跳轉的URL後面加“?XX='XXXXX'”即可,也可以使用Session來實現。

問題解決了,我們來引申一下:

        如果我們要跳轉的不是主框架頁面了,而是右邊甚至於是框架中的任意一個頁面,那麼該如何呢?

答案其實也很簡單,我們再來仔細研究下我們上面列出來的三條跳轉語句,都是使用的獲取Documnet中的父層的框架對象,然後進行跳轉,那我們其實只要使用我們熟悉的Javascript獲取到相應的要跳轉的框架對象進行跳轉,至於傳參嘛,那就跟上面是完全一樣了哦!  
        我們來看下示例:

Response.Write"<script   language='javascript'>window.location='left.aspx';parent.rightframeName.location='right.aspx'</script>"); 

        實現跳轉了嗎?是的,恭喜了,但是這樣OK了嗎?還沒有...   
        我們發現,這樣進行跳轉的時候,左邊的框架確實是跳轉了,但是右邊的框架也隨即跟着刷新了,右邊頁面中所作的一些改動也都被重置掉了,這可不是我們想要的結果,那麼怎麼辦?再往下看:  
        我們都知道,在HTML時代是不存在這個問題的,爲什麼呢?嘿嘿,因爲那是HTML控件,使用的JavaScript客戶端代碼,因此它不會回發服務器,那麼我們是不是可以也使用HTML控件,然後再在它的onclick時間中實現呢?  當然是可以的,你不要跟我說你用的是服務端控件,你要在後臺代碼裏實現哦,在LOAD時間裏AddAttributes方法添加一個onclick事件就OK了的。  
        我在網上賺了一圈,還發現一個牛人提出來的方法,看完之後不得不提一下HTML中的target ,具體內容?白度上自己擺一把去~  
  我這裏就把牛人的方案照搬過來了阿:

  假設左框架爲   frmLeft,右框架爲   frmRight  
   
  <frame   name="frmLeft"   src="left.aspx">  
  <frame   name="frmRight"   src="right.aspx">  
   
  關於左右框架間的數值傳遞有幾種方法:  
   
  第一種:不提交服務器,在客戶端實現  
   
  left.aspx   中的代碼  
   
  <INPUT   onclick="HandToRight()"   id="Button1"   value="Button"   name="Button1">  
  <script   language=javascript>  
  <!--  
  function   HandToRight()  
  {  
        var   para   =   document.getElementById("TextBox1").value;  
        window.parent.frmRight.location.replace("right.aspx?p="+para);  
  }  
  //-->  
  </script>  
   
  此方法通過   URL   傳參數,不安全  
   
   
  第二種,用   POST   的方法,left.aspx   的代碼,注意   form   的   target    
   
  <form   id="Form1"   method="post"   runat="server"   target   ="frmRight">  
   
  編寫提交按鈕事件  
  Session["ID"]=TextBox1.Text;  
  Response.Redirect   ("right.aspx");  
   
  此方法較安全,但多一個往返   
       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章