假设你有一个ASP.NET MVC项目并且正在使用一个服务层,比如在asp.net网站的这个联系人pipe理器教程中: http : //www.asp.net/mvc/tutorials/iteration-4-make-的应用程序,松散耦合-CS 如果您的视图有视图模型,服务层是否提供每个视图模型的适当位置? 例如,在服务层代码示例中有一个方法 public IEnumerable<Contact> ListContacts() { return _repository.ListContacts(); } 如果你想要一个IEnumerable,它应该在服务层,还是有其他地方是“正确”的地方? 也许更恰当的是,如果你为每个与ContactController关联的视图有一个单独的视图模型,那么ContactManagerService应该有一个单独的方法来返回每个视图模型? 如果服务层不适合,控制器应该在哪里初始化viewmodel对象?
从这个问题 ,看起来有一个控制器创建一个ViewModel ,更准确地反映了视图试图显示的模型是有道理的,但我很好奇的一些约定(我是新来的MVC模式,如果它不是很明显)。 基本上,我有以下问题: 我通常喜欢有一个类/文件。 如果只创建一个ViewModel来将数据从一个控制器传递到一个视图,这是否有意义? 如果一个ViewModel属于它自己的文件,并且你正在使用目录/项目结构来保持独立, ViewModel文件属于哪里? 在控制器目录中? 这基本上是现在。 我可能还会提出几个问题,但是在过去的一个多小时里,这一直困扰着我,而且我似乎在别处找到了一致的指导。 编辑:看CodePlex上的示例NerdDinner应用程序 ,它看起来像ViewModels是控制器的一部分,但它仍然让我不舒服,他们不在自己的文件。