有人可以解释为什么在MVC3中使用ViewModels吗?

时间:2012-01-16 17:09:14

标签: asp.net-mvc-3 architecture viewmodel

在研究MVC 3架构时,我一直看到的一个问题是将模型分解为自己的项目并称之为ViewModels的概念。

正如我正在编码,我很难意识到这有什么好处。有人可以解释一下它的优点是什么吗?

4 个答案:

答案 0 :(得分:5)

我不确定你认为View模型应该在他们自己的项目中。这通常不是它的完成方式。

业务模型通常与单独的项目一样,数据模型也是如此,但视图模型通常位于它们所属的Web项目中,因为它们是表示层的一部分。

答案 1 :(得分:2)

因为关于MVC的一个主要问题是关注分离。您应该创建一个只包含View所需数据的ViewModel,而不是逻辑。

您可以(但不需要)单独的项目(例如:数据访问层)

ViewModel只是一个简单的POCO类(Plain Old CLR Object,一个只有属性,没有逻辑的类)

更多信息

答案 2 :(得分:1)

ViewModels用于定制模型以使用特定的View。如果要将特定信息传递给View或检索特定信息,则可以构建ViewModel。

ViewModel的一个例子是:

public class PersonViewModel
{
    public Person NewPerson { get ; set ; }
    public Address NewAddress { get ; set ; }
    public SelectList Suffixes { get ; set ; }
}

如果您有一个创建新人的视图,您可以将此设计为此视图的ViewModel类传递给新人View。

答案 3 :(得分:1)

视图模型是UI层的一部分,因此它们通常应该保留在同一个项目中。