asp.net mvc是否使用主动或被动模型

时间:2014-07-13 17:09:38

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

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

被动型号 控制器更新模型并最终更新视图的地方

活动型号 模型和视图实现观察者模式的位置,以便通知模型中的更改以进行查看。

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

2 个答案:

答案 0 :(得分:4)

你是对的,在大多数情况下,MVC中的常见方法是被动模型。

如果要实现活动模型模式,可以使用其中ViewModel在js中的KnockoutJS,并在更改值时更新视图。像观察者模式KnockoutJS有可观察性。见下面的例子。

http://learn.knockoutjs.com/#/?tutorial=intro(有关可观测量的参见步骤2)

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

答案 1 :(得分:2)

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

WPF使用MVVM模式 - 模型处于活动状态,因为当数据发生变化时,Model可以向View发送通知并更新数据。

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