ASP MVC中的ViewModel和Controller之间有什么区别

时间:2009-12-11 22:07:55

标签: asp.net-mvc wpf silverlight mvvm

一方与另一方的责任是什么?一个与另一个应该采用什么样的逻辑?哪一个打服务和数据库?如何确定我的代码是应该放在viewmodel还是控制器中?

记录,我使用的是asp mvc

4 个答案:

答案 0 :(得分:3)

将控制器与ViewModels混合使用并不罕见。在这种情况下,您可以将以下职责分配给角色:

ViewModel 表示演示文稿的状态和行为。

控制器负责应用程序的工作流程。此外,它介于ViewModels之间。因此,它通过使ViewModel明确地相互引用来促进松散耦合。

有关这些角色的更多信息:Link

答案 1 :(得分:2)

嗯,MVVM实际上是一个WPF和Silverlight特定的设计模式。它特别依赖并要求这些技术的数据绑定,命令和模板功能。

如果您使用的是ASP.NET MVC,则MVVM不适用于体系结构。根据定义,它是围绕模型 - 视图 - 控制器(因此ASP.NET MVC )构建的,并使用该架构设计模式。

答案 2 :(得分:1)

我同意Reed,尽管最近Hanselminutes Phil Haak谈到了asp.net MVC 2,并多次引用了'ViewModel' - 所以我推断即使你使用MVC也可以创建VM

此外 - 我一直认为MVVM应用程序受益于至少一个包含应用程序范围问题的VM,例如导航,我认为它更像是一个Controller而不是ViewModel ......

答案 3 :(得分:0)

我同意你们两个,但只是想添加另一个模式MVP(模型视图演示者),它最适合ASP.Net和Windows表单,但不能用于WPF和Silverlight。 MVVM是专为WPF和Silverlight应用程序设计的。