asp.net關於強制回應視窗重新整理問題__.net

來源:互聯網
上載者:User
問題描述:
     在實際運用中,我們在a.aspx頁面需要開啟一個新視窗(為描述方便,假定為b.aspx),在新視窗關閉之前,需要禁用a.aspx頁面。b.aspx裡面觸發有相應的事件,當事件觸發的時候,同時應該更新b.aspx.
解決方案:
     這時我們最好的選擇是用強制回應視窗開啟b.aspx,即showModalDialog(b.aspx).
     如果直接用強制回應視窗開啟b.aspx頁面,如果b.aspx僅僅是textbox、dropdownlist之類的運行在伺服器端的文本控制項(這些控制項本身也不能觸發對應的事件),返回這些控制項的值不會出什麼問題,但是如果要有伺服器端button之類調用cs裡面的方法,或者本身會觸發事件,就會出問題。當觸發這些方法,就會將強制回應視窗開啟的頁面做為一個頁面彈出(本例也就是b.aspx)。強制回應視窗裡面是不能重新整理的,所以這些事件如果要更新當前強制回應視窗裡面的頁面內容,是不可能的。
     這中機制是沒辦法改變的,觸發了相應的事件,就會重新載入一次頁面(觸發了Page_Load事件),即使IsPostBack是false.
     這種情況下該怎麼做才能達到預定的目的?
     我們不妨試試這種方法:用架構進行操作。說簡單點:建立一個新頁面(c.aspx),只做架構支撐。對應子幀指向指定的頁面(b.aspx)。這樣我們在a.aspx頁面裡用強制回應視窗開啟c.aspx,就達到預定的效果了。b.aspx頁面可以有任何觸發事件進行更新頁面的內容。同時如果要傳值,就需要先傳值到架構頁面,然後再傳到既定的頁面。這種方法的由來是參考了同事的做法,本人覺得這種方法很簡便,不需要有太多的考慮。操作起來相對來說最容易。
     第二種方法我們就需要有ajax方面的知識了。這種做法需要注意的是同樣不能夠觸發到本頁面的事件,否則就會自動彈出強制回應視窗裡面的頁面(沒有頁面支撐的情況下)。這種方式下我們需要藉助第三個aspx頁面來進行相應的事件操作處理,然後返回操作結果以更新(更新而不是重新整理)強制回應視窗裡面的內容。這種方式的難度要比第一種方法大,不好操作。尤其是強制回應視窗裡面控制項涉及到資料繫結的時候,更不好操作。
    第三種方法本人沒操作成功。大致思想:用window.open()方法開啟b.aspx頁面,b.aspx頁面載入的時候,將a.aspx裡面所有的控制項都禁用掉,同時也要將a.aspx頁面的重新整理功能關閉掉(shift+F10,F5,右鍵,瀏覽器本身的重新整理按鈕),當b.aspx頁面關閉的時候,傳入一個參數到a.aspx頁面,直到該參數值為真的時候,再釋放所有禁用的資源。在實際操作中,open()方法開啟b.aspx頁面後禁止重新整理a.aspx頁面遇到了問題。在b.aspx頁面的window.onload=funciton(){}添加opener.document.oncontextmenu="return false",達不到禁用右鍵
opener.document.onkeydown=function(){if(event.keyCode==116) event.keyCode=0;event.returnValue=false;}調用對應的事件也禁止不了F5鍵。
    當初也懷疑是這些事件寫的有問題,就直接把這些事件放在一個單獨的一個頁面做測試,一旦到測試頁面的時候,這些都是正確的:禁掉了F5和右鍵。回到用open()開啟b.aspx頁面,達不到禁用目的。後面的根本就進行不下去了,很喪氣............
  第一種第二種方法都不錯,第二種方法要對ajax有一定的瞭解。至於選擇哪種技術,則需要看個人的情況,哪種方法上手快就選那種方法。 
 第三種方法出現的問題,不知該如何解決....
  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.