【问题标题】:Does asp.net mvc use active or passive modelasp.net mvc 使用主动还是被动模型
【发布时间】:2014-07-13 17:09:37
【问题描述】:

我正在从以下article 中阅读有关 MVC 模式的信息。在文章中,作者指定了两种模型:

被动模型: 控制器更新模型并最终更新视图的位置

主动模型: 模型和视图实现观察者模式的地方,以便将模型的更改通知给视图。

在创建 Hello World ASP.NET MVC 5 项目时,我注意到 Controller 调用 Controller.View()Controller.View(model) 来返回视图给用户。这是否意味着它使用被动模型?另外,模型似乎总是由Controller更新,如果View更新模型,它仍然是MVC吗?

【问题讨论】:

  • 我会说它非常被动,除非你用 mvvm 做类似 signalr 的事情。
  • 投反对票的人,有什么理由要求澄清是个坏主意,下次我该如何让它变得更好?
  • 不幸的是,对于大多数 ASP.NET MVC 应用程序来说,答案是“两者都不是,它使用了一个美化的活动记录的集合”

标签: c# asp.net-mvc design-patterns asp.net-mvc-5


【解决方案1】:

您是正确的,在大多数情况下,MVC 中的常用方法是被动模型。

如果你想实现主动模型模式,你可以使用 KnockoutJS,其中 ViewModels 在 js 中,当它们的值发生变化时它们会更新视图。像观察者模式一样,KnockoutJS 也有 observables。请参见下面的示例。

http://learn.knockoutjs.com/#/?tutorial=intro(可观察对象见第 2 步)

http://www.dotnetcurry.com/showarticle.aspx?ID=933

【讨论】:

    【解决方案2】:

    在 ASP.NET MVC 中 - 模型是被动的,因为控制器只是将模型传递给视图,视图自己从当前模型获取数据,即模型无法在没有控制器的情况下更新数据。

    WPF 使用 MVVM 模式 - 模型处于活动状态,当数据发生更改时,模型可以向视图发送通知并更新数据。

    注意:如果在 ASP.NET MVC 中您使用的是 KnockoutJS 或 AngularJS,那么在这种情况下,它就是 MVVM 模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 2011-11-04
      相关资源
      最近更新 更多