2015-10-06 166 views
-2

我正在使用C#處理ASP.NET MVC項目。 好的,我有一個佈局視圖,我把我的局部視圖,其中只包含顯示通知消息的div。在佈局中更新局部視圖

現在從某種角度來看,我有一個按鈕,可以在5分鐘內以異步方式生成報告。在生成報告時,我需要允許用戶使用網站的其他區域。

我的操作方法,一旦報告生成成功,只返回一個字符串「Success」,o/w「Fail」。 我想要做的就是將返回的字符串分配給佈局頁面上的局部視圖的div。因此,用戶可以通過這種方式從他在網站中的任何地方看到通知。

我該怎麼做?謝謝。

回答

0

這裏有很多不同的事情發生在這裏。首先,您希望服務器以「成功」或「失敗」狀態更新用戶。這需要1)使用Web套接字在客戶端和服務器之間創建一個持久連接,允許服務器與客戶端交談而不需要客戶端首先發送請求,或者2)長輪詢,這意味着客戶端不斷髮送以確定的時間間隔請求查看服務器是否有更新。

長輪詢(帶AJAX)是在web套接字出現之前實現這一目標的唯一方法,這些套接字相對較新,並且得不到普遍支持。特別是,在服務器端需要IIS8 +,而在客戶端,您需要一個現代瀏覽器,除了IE 9及以下版本外,其他任何瀏覽器都是如此。如果您無法在IIS8 +上運行該站點,或者您需要支持IE的舊版本,那麼您將陷入長輪詢。

但是,無論採用哪種方法,您都綁定到單個頁面。如果用戶離開,web套接字連接關閉,並且長輪詢停止。如果用戶仍然在您的網站上,下一頁將需要重新建立所有這些功能以保持其正常工作。這並不難 - 只是需要注意的一點。這意味着您需要在網站上爲此加載一些通用腳本。

現在只要替換你的「局部視圖」的內容去。你不應該這樣看待它。我鼓勵你閱讀我的文章:There's no such thing as a "partial view" client-side,在那裏我瞭解更多細節。 TL; DR版本是客戶端的所有更新都發生在客戶端,並且在那一點上,您擁有的只是瀏覽器DOM。沒有「局部視圖」的概念。如果你想替換DOM的一部分,你必須選擇並操作它。這一切都是用JavaScript完成的,全部都在你身上。沒有簡單的「替換這個局部視圖」按鈕。