MVC really leaves the M part to the developer.
Even in your official examples, you will see options. Your question reveals one of the most common misconceptions about MVC. You should NOT bind your domain or data models directly to views, and you should not use their controller methods as parameters. See this post for more or less published .
Ideally, your controllers will call DAL, and some mechanism will display these data or domain models to view the models. It is those View models that are models that exist specifically to facilitate the user interface that must exist in the WebApp Models folder.
So, you are definitely on the right track by creating a new assembly to contain the DAL. One of the “simple” mechanisms for mapping to a ViewModel is a simple method for each ViewModel:
public class MyWidgetFormModel() { public string Name { get; set; } public string Price { get; set; } public MapFromDAL(DAL.Widget widget) { this.Name = widget.Name; this.Price = widget.Price; } }
Update : based on your comments, here is a great answer about one layout of a custom project.
source share