2011-04-12 32 views
0

我有一個使用ModalPopupExtender創建的模態對話框。有一個使用Webservices和JQuery模板創建的UI。還有一個隱藏的ASP.NET按鈕,它使用__doPostback()技術從JavaScript中調用。 JavaScript隱藏模式彈出和__doPostback被稱爲按鈕(這是在ModalPopupExtender裏面)模態對話框和__doPostback無限循環

我使用這種技術來傳遞一些參數是從JavaScript。服務器端事件處理程序會執行一些處理並轉移到一個頁面(在某些情況下會轉移回頁面)

當它轉移到的頁面是不同的頁面時,它可以正常工作,但如果它轉移到同一頁面,回傳發生一遍又一遍,直到堆疊吹。

當我回發到同一頁面時,如何停止回發。我想這並不是第一次發生,因爲它發佈到不同的頁面並且回發被無效。

代碼示例很難提供,因爲它是一個相當複雜的系統,很難將其分開。

聽起來很可怕我知道,我想要做的,但是,它從JavaScript調用服務器端函數與一些變量。有一個更好的方法嗎?

回答

1

嗯,你回來了,所以你有服務器端控制你的標記。只是堅持你的JavaScript的轉載在容器中的情況下,並在頁面發佈到自己的情況下,隱藏該容器,因此它不會加載到頁面...

這或你可以做客戶端Cookie或查詢字符串PARAM。兩者都可能是不可靠的。

1

沒有代碼示例,我只能推測並希望將您指向正確的方向。

當您轉移到新頁面時,舊頁面(因此該頁面上的JavaScript)超出了範圍,因此不會繼續執行。但是,如果頁面重新加載並且調用__doPostback的條件繼續,那麼您已創建導致問題的循環引用。在調用__doPostback之前,當您仍然在客戶端上時,您需要清除可能導致事件鏈的任何情況。

如果你不能發現什麼在調用你的事件鏈,那麼你可能會認爲,而不是轉回到同一頁面轉移到一個新的頁面(bounce.aspx),然後調用一個response.redirect返回頁面以便它在重新加載時不是回發,而是新的頁面實例。 (是的,這是個雜牌組裝電腦,但它可能是一種有效的權宜...)

乾杯,

CEC

0

感謝您的答覆。我想我已經找到了解決方案。

在服務器端回調我這樣做:

setupPage(); 
Server.Transfer("mypage.aspx", true); 

將其更改爲這樣:

setupPage(); 
Server.Transfer("mypage.aspx"); 

解決了這個問題。

SetupPage()將所有數據存儲在隱藏字段中,並且我認爲保留表單狀態將是必要的,以便在傳輸之後駐留。這似乎並不是這樣,因爲我在轉移之前在頁面中完成的所有設置似乎仍然存在。

奇或也許我誤解一些關於.NET

編輯基本的 - 是的,我誤會了很多關於.NET。它有時使我的頭部受傷。

感謝您的幫助