viewmodel是在MVVM(Model-View-viewmodel)和ASP.NET MVC的推荐实现中使用的术语。研究“viewmodel”可能令人困惑,因为每个模式使用相同的术语。
MVC viewmodel和MVVM viewmodel之间的主要区别是什么?例如,我相信MVVM viewmodel更丰富,给定缺少一个Controller。这是真的?
解决方法
一个相当具有挑战性的问题,简单地回答,但我会尝试。 (请记住,对这些问题的答案仍然是开发者之间的辩论主题。)
在MVC中,viewmodel提供了要呈现的视图所需的所有信息。它包含的数据是使用模型中定义的数据创建的。 View读取viewmodel并呈现输出。来自视图的输入传递给控制器,控制器控制模型,构造合适的viewmodel,并将其传递给视图进行渲染。
在MVVM中,viewmodel提供与它在MVC中相同的功能,但它还通过提供允许View操作模型的命令来替换MVC控制器的一部分。 WPF数据绑定根据viewmodel中的变化来管理视图的更新(并且这有效地替换了MVC控制器的剩余功能)。