2010-01-21 78 views
2

背景:JQuery的blockui和ASP.NET回傳衝突

我使用jQuery jQuery的1.3.2 blockui 2.31,在ASP.NET 2.0。我使用對話框顯示(通常)隱藏的DIV作爲排序模式對話框,其中ASP.NET服務器端控件(爲簡單起見,一個asp:按鈕)的排序。沒有AJAX,或不保證是任何。

jquery blockui做的其中一件事,如果你傳遞一些html元素 - 它會從它在頁面中的位置移除控件,並將其附加到主體

ASP.NET 2.0似乎想要回發到位於表格中的控件,您可以使用$(#aspnetForm)來查找。 jquery blockui剛剛將他們移動到正文,所以回發從不發射

的方法是實例方法,可能不會爲靜態(登錄的用戶和頁面控件的引用...)

我已經做了一些打井工作:

我修改jquery blockui添加到表單中(並與選擇器一起去除塊),但它使用IE6和IE7 - 覆蓋從表單開始,整個對話框偏離中心。隱藏覆蓋不是一種選擇,我真的很討厭與IE特定的css & IE特定的腳本。

我嘗試追加一些圖層到身體和一些到窗體,但身體層總是顯示在窗體層的頂部(所以不透明層阻止輸入也會阻止div上的輸入我試圖以顯示)。

我在想這個解決方案是讓div調用一個隱藏的dummy anchor來執行原始按鈕的回發。 sontek在他對相關問題的回答中提出了這個建議。

我實際的問題:

我在正確的軌道上的假回發把戲?我想,如果我依靠jQuery的模態對話功能,我不應該擔心回退。或者,我應該繼續與表單添加的樣式混搭嗎?

+0

你可以在這裏檢查http://stackoverflow.com/questions/7929094/jquery-blockui-and-asp-net我還沒有測試過這個超過歌劇壽 – Peter

+0

這已經或多或少回答了一段時間。我們已經離開這個插件,因爲它沒有我們想要的行爲。 – Broam

回答

2

如果您想要正常的asp.net行爲(例如事件觸發),那麼您很難將標記放回到表單標記中。這就是說,如果你堅持使用jQuery模式,我不認爲觸發回傳是件壞事。當你從鏈接/相關的問題中提到,你可以在你得到回傳的參考GetPostBackEventReference代碼隱藏,並通過在誰是你想火事件,如控制:

//assuming your button is btnMyButton and 
Page.ClientScript.GetPostBackEventReference(btnMyButton, null); 

你可以附上這個javascript調用到任何其他按鈕,包括您在表單標籤外移動的按鈕。這將基本上連接回傳並像往常一樣提升控件的事件。

不是最優雅的解決方案,但我認爲如果您需要使用jQuery模式,那麼它就處於正確的軌道上。

+0

這幾乎是我們必須去的。不在表單中的控件不會將其狀態傳遞迴服務器。儘管textarea很容易,但試圖使用客戶端的東西來解決asp的問題:FileUpload是一個我不想考慮的恐怖事件。 – Broam