2009-10-01 69 views
0

在有一個大的UpdatePanel一個相當複雜的畫面,我運行到以下問題:更新面板:防止同一用戶發出多個併發請求?

如果用戶點擊某個按鈕6或7次的真快,似乎最終處理出來的最後一個請求轉而出現問題。具體來說,會話​​狀態中有一個xml文檔,它不同步。

我真正想要做的是阻止點擊此按鈕,直到回發完成。我知道我可以找到一個簡單的方法來使用Javascript做到這一點,但它似乎可能是內置的。

有什麼想法?

注意:下面的答案是有幫助的,但他們還沒有解決問題。使用onClientClick禁用鏈接按鈕後,再次啓用回發後允許它回來,問題依然存在。這幾乎就好像updatepanel沒有完成所有事情,即使它已經在屏幕上繪製了新的啓用鏈接按鈕。

更多筆記(已解決!):我用BlockUI(jQuery插件)解決了這個問題。請參閱下面的答案。

+0

任何解決方案與*** BlockUI ***?代碼示例? – Kiquenet 2016-05-25 16:30:45

回答

1

UpdatePanel?我會假設你使用MS AJAX,如果是的話,我會建議你下載AJAX工具包,如果你還沒有這樣做。該工具包隨附許多隨時可用的控件和擴展程序,以幫助您在支持AJAX的應用程序中使用。例如,有一個名爲「ConfirmButton」的擴展名可以幫助您防止用戶多次點擊按鈕,而且它也以非常酷的優雅方式進行操作。

另一個選擇是使用JavaScript或更好的方式創建一個自定義按鈕控件,該控件在被點擊後有一個屬性被禁用,如果你這樣做了,那麼在其他應用程序中重用它真的很容易。

希望這會有所幫助。

3

ASP.NET UpdatePanel始終尊重最後一個請求。如果您在處理某個請求時發出請求,則會先終止第一個請求,並處理當前的請求。它的設計和構建以這種方式工作。

一旦點擊了JavaScript,我會禁用該按鈕。

+1

...並確保處理完成之後,你重新啓用按鈕。 – 2009-10-02 13:17:29

+0

看看我的筆記,如果你有時間......還有更多的事情在這裏。 – 2009-10-02 16:28:26

1

在家庭軋AJAX框架我工作一段時間回來,我們只是記錄在JavaScript中的最後一次通話(javascript函數調用與許多參數),並阻止與相同參數的後續調用。這不是理想的,但它捏了一把。下面

1

我與Infragistics的控制有些「ASYC」的問題,但在Scripmanager加入ScriptMode =「釋放」後,問題解決。