2012-03-08 106 views
1

我試圖開發一個非常簡單的消息窗體(MVC C#窗體),其中窗體顯示用戶有多少條未讀消息。如果在我的模型中列出新消息,您如何通知視圖(哪些方法)?我似乎無法讓我的頭轉過來。MVC模型通知更改

+0

我不認爲你問的ASP.Net MVC是否正確?我相信你問的是在C#窗體表單應用程序中使用的模型視圖控制器設計模式是否正確?如果是這樣,那麼這些現有的答案都是針對ASP.Net MVC。 – 2012-03-09 08:04:50

回答

1

如果你正在談論一個C#windows窗體應用程序,那麼你想要使用的是觀察者模式。請參閱here瞭解該模式。基本上你想讓你的控制器通過觀察者模式向模型註冊,以通知任何可能導致視圖過時的模型改變。然後控制器可以通知視圖重新渲染受影響的部分。

+0

非常感謝,這是我剛纔討論的窗體應用程序,Observer模式完美運行。非常感謝。 – Louise 2012-03-09 13:18:25

2

理想情況下,您需要某種push technology,因爲在您的場景中服務器啓動更新。

我建議兩個可能的解決方案:

  1. 輪詢(使用AJAX):這基本上意味着週期性的,因此請求未讀郵件的當前計在這種情況下,它仍然是瀏覽器誰發起連接,而不是服務器。請參閱鏈接瞭解如何請求服務器並使用檢索到的數據更新您的視圖。
  2. 如果您的服務器知道新消息到達的時刻,我建議使用SignalR。它是幾種最流行的推送技術的封裝(包括後備到長輪詢,如果它發現它不能做得更好)。我用它使我對我們的項目非常滿意,它的作用就像一種魅力。在設置基礎架構(參見here)之後,您可以從MVC控制器中直接調用客戶端的方法,也可以直接從客戶端調用服務器代碼(在這兩種情況下,客戶端指的是您在視圖中使用的一些JavaScript)

如果您預計將來需要刷新的信息越來越多,我肯定會投票支持SignalR,因爲它會讓您的代碼更易於維護。

+0

哦,我以爲你在談論ASP.NET MVC,雖然可能並非如此...... – twoflower 2012-03-09 10:01:09