【问题标题】:MVC Model Notifying View of changesMVC 模型通知视图的变化
【发布时间】:2012-03-08 15:08:14
【问题描述】:

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

【问题讨论】:

  • 我不认为你在问 ASP.Net MVC 对吗?我相信您问的是 C# windows 窗体应用程序中使用的模型视图控制器设计模式是否正确?如果是这样,那么这些现有答案都是针对 ASP.Net MVC 的。

标签: c# winforms model-view-controller


【解决方案1】:

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

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

  1. 轮询(使用AJAX):这基本上意味着定期请求当前未读消息计数,因此在这种情况下,仍然是浏览器发起连接,而不是服务器。有关如何请求服务器并使用检索到的数据更新视图的示例,请参阅链接。
  2. 如果您的服务器知道新消息到达的那一刻,我建议使用SignalR。它是几种最流行的推送技术的包装器(如果发现它不能做得更好,包括回退到长轮询)。我在我们的项目中使用它非常满意,它就像一个魅力。设置基本基础架构后(请参阅here),您可以从 MVC 控制器中直接调用客户端的方法,也可以直接从客户端调用服务器代码(在这两种情况下,客户端指的是您在查看)

如果您预计将来需要更新的信息越来越多,我肯定会投票给 SignalR,因为它会使您的代码更易于维护。

【讨论】:

  • 哦,我以为您在谈论 ASP.NET MVC,但可能并非如此......
【解决方案2】:

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

【讨论】:

  • 非常感谢,我说的是 Windows 窗体应用程序,并且观察者模式运行良好。非常感谢。
猜你喜欢
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
相关资源
最近更新 更多