這可能是一件非常簡單的事情。基本上,用戶點擊一個按鈕併發生潛在的長時間運行的任務。我想做一些事情,例如切換按鈕的啓用狀態,顯示微調等。在VB.NET Winforms中,我只是執行Application.DoEvents()並且更新將會發生並且代碼可以繼續。我怎樣才能在ASP.NET中做到這一點? (最好的服務器端或最小的JavaScript)長期提交ASP.NET反饋
回答
有幾種方法可以在ASP.Net中實現,具體取決於您的要求。啓動流程相當簡單,但要從客戶端完成監控,需要在服務器和客戶端進行更多的工作。
解決方案的基本輪廓是:
1)啓動一個動作在客戶端上執行一些動作。例如,您可以將整個頁面重新發布到單擊按鈕上,發起ajax請求,或者進行部分頁面回發,具體取決於您需要從頁面獲取多少信息。
2)在服務器端,使用BackgroundWorker啓動任務,在工作流隊列中創建一個條目,或將請求存儲在由負責執行操作的服務監視的數據庫表中。
3)回到客戶端,使用javascript啓動一個window.timeout循環,當它超時時,向web服務器發出一個ajax請求來檢查完成情況。使用像這樣的超時循環將確保UI保持響應,並且所顯示的任何動畫都將正確顯示。你如何檢查完成將取決於你的服務器端實現是如何設計的,但幾乎肯定會需要一個數據庫。
我們用下面的一般方法用於啓動從web客戶端,它可以是長期運行報告:
當用戶發起的報告,使用JavaScript打開一個新窗口,以報告生成頁面在客戶端上,傳遞足夠多的參數來啓動它。打開一個單獨的窗口允許用戶繼續工作,但仍然看到發生了一些事情。
報表頁面的用戶界面基本上包含一個動畫GIF,以便用戶知道正在發生的事情。
當報告頁面最初加載到服務器上時,它會生成一個唯一的ID用於監視報告的狀態並將其嵌入到JavaScript中以用於監視狀態。然後它將此唯一標識符存儲在包含唯一標識和狀態列的數據庫表中,初始化要請求的狀態。
數據庫條目一旦建立,頁面就會觸發BackgroundWorker以啓動操作,然後將頁面返回給用戶。
當頁面顯示時,javascript會啓動一個window.timeout循環,該循環週期性地向Web服務器發出ajax請求,然後使用先前創建的唯一標識符檢查數據庫中的報告狀態。
當backgroundworker成功完成報告或失敗時,它會使用狀態,報告位置或錯誤消息更新數據庫表並終止。
當javascript循環發現報告生成已完成時,它會向用戶顯示錯誤消息或報告。
希望這可以爲您解決問題提供一些建議。
與此問題可能是,一旦頁面發佈,你不能更新頁面的其他部分。 您可以使用多個asp:updatepanel並與其他更新面板通信,從而導致面板中的狀態發生更改。 看看這個鏈接:
http://www.ajaxtutorials.com/ajax-tutorials/tutorials-using-multiple-updatepanels-in-net-3-5-and-vb/
它會告訴你如何做到這一點。
- 1. asp.net網頁上的多個表單提交反饋
- 2. 如何提交網站反饋給GitHub?
- 3. 提交已完成的反饋活動
- 4. 提交意見或建議或反饋
- 5. ASP.net反饋表格
- 6. 反饋表與asp.net代碼
- 7. 用戶點擊提交後提供反饋
- 8. TestFlight提供反饋按鈕
- 9. 如何occasionaly長期運行的Python列表理解提供反饋
- 10. asp.net內嵌反饋表單提交後的「警報/確認/錯誤」。 (成功!)
- 11. 在長時間的動作中向用戶提供反饋
- 12. Sentry Report對話框的用戶反饋不提交
- 13. 帶星星的滑塊,用於在ios中提交反饋
- 14. D2L Valence - 沒有提交的投寄箱反饋意見
- 15. ajax反饋提交沒有頁面重裝
- 16. 如何將Android反饋表單作爲電子郵件提交?
- 17. 將用戶反饋數據提交給Elasticsearch
- 18. ASP.Net的最佳「加載」反饋?
- 19. 用戶(很像反饋頁)ASP.Net C#
- 20. 添加時間反饋日期時間
- 21. 提供反饋以查看控制器
- 22. 反饋小工具頁面提問
- 23. mgwt/gwtphonegap建議,反饋信息,提示
- 24. 如何向Appcelerator提供反饋?
- 25. 在android中提供郵件反饋
- 26. 試圖提出反饋頁面
- 27. 正面反饋
- 28. ItemizedOverlay反饋
- 29. 從反饋
- 30. 建築反饋