MVC模型通知查看更改

时间:2012-03-08 15:08:14

标签: c# winforms model-view-controller

我正在尝试开发一个非常简单的消息传递表单(MVC C#表单),其中一个表单显示用户拥有多少条未读消息。如果要在我的模型中列出新消息,您如何通知视图(哪些方法)?我似乎无法理解这一点。

2 个答案:

答案 0 :(得分:2)

理想情况下,您需要某种push technology,因为在您的方案中,服务器会启动更新。

我建议两种可能的解决方案:

  1. 轮询(使用AJAX):这基本上意味着定期请求当前未读消息的计数,因此在这种情况下,它仍然是启动连接的浏览器,而不是服务器。有关如何请求服务器以及使用检索到的数据更新视图的示例,请参阅该链接。
  2. 如果您的服务器知道新消息到达的那一刻,我建议您使用SignalR。它是几种最流行的推送技术的包装(如果它发现它不能做得更好,则包括回退到长轮询)。我用它来对我们的项目非常满意,它就像一个魅力。设置基本基础结构(参见here)后,可以直接从MVC控制器中调用客户端的方法,也可以直接从客户端调用服务器代码(在这两种情况下,客户端都指的是您使用的一些JavaScript)在你看来)
  3. 如果您预计将来需要刷新越来越多的信息,我肯定会投票支持SignalR,因为它会使您的代码更易于维护。

答案 1 :(得分:1)

如果您正在谈论C#Windows窗体应用程序,那么您要使用的是Observer模式。有关模式,请参阅here。基本上,您希望让控制器通过观察者模式向模型注册,以通知任何可能导致视图过时的模型更改。然后控制器可以通知视图重新渲染受影响的部分。