Where to put ViewModel classes in MVC

asp.net, c#, model, viewmodel

Solution

Just create a new folder called ViewModels inside your project. So that along with the Views, Controllers and Models folders, you'll also have ViewModels. Like you already said, you talk to your DAL using your models and you talk to your views using your view models.

Problem

My question is very simple. I want to know where to put my `ViewModels` in an MVC application. Currently the project I'm working on only has `ViewModels` and they are stored in the `Models` folder. In that folder we directly create ViewModel classes. But normally I would also have `Model` classes, to get data from a database or something. Then from a `Controller` I'd 'talk' to a Model method and store the result in a `ViewModel` property. But where do I put the `Model` classes and `ViewModel` classes when I use both of them? What is a good practice in the sense of structuring my files/folders for these two?

Original source