在研究MVC 3架构时,我一直看到的一个问题是将模型分解为自己的项目并称之为ViewModels的概念。
正如我正在编码,我很难意识到这有什么好处。有人可以解释一下它的优点是什么吗?
答案 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层的一部分,因此它们通常应该保留在同一个项目中。