Q:

.net MVC/MVP Project Structure - How's this design?

I know there are a lot of MVC design patterns out there. It seems one popular pattern for .net MVC is to use MVVM (Model, View, View Model).
I sort of like this approach but at the same time would like to add the goodness of MVP also.
My thoughts were to do something like this.
An example:
/Intranet (Solution)

 .Intranet.Core/ (Project)- Accesses data in Intranet.Data and contains more generic business logic

 .Intranet.Data/ (Project)- ORM/Linq2Sql stuff sits here

 .Intranet.Web/ (Project)- MVC stuff sits here

 ..Models/ - Stuff that links to Intranet.Core and returns values for Controller

 ..ViewModels/ - Stuff the controller wants to pass to the view so it can handle the display

 ..Views/ - Obviously the views sit here

Does that structure make sense? I am just wondering if that's a decent way to go or if I am over-complicating things... like I tend to do.

A:

First of all I think you are a bit confused about architectural patterns.
MVC (Model-View-Controller) IS an architectural pattern used in presentation layer.
MVVM (Movel-View-ViewModel) is a different pattern that suit very well for example in WPF or Silverlight applications.
Finally MVP (Model-View-Presenter) is another presentation pattern. You can consider using it in windows forms application or maybe to decouple presentation from logic in web form application. But it is not very intuitive, so TODAY best way to develop web application is MVC pattern.
Start a new ASP.NET MVC application project in Visual Studio to have a starting presentation layer architecture.  Then add at least a Model project to have classes useful only for the controller.
For example:
/Intranet (Solution)

 .Intranet.Core/ (Project)- Accesses data in Intranet.Data and contains more generic business logic

 .Intranet.Data/ (Project)- ORM stuff sits here (don't use LinqToSql, but a real ORM like NHibernate or maybe last Entity Framework version)

 .Intranet.Web/ (Project)- MVC stuff sits here: Controllers and views. Refernce ViewModels

 .Models/ (Project) - Stuff that links to Intranet.Core and returns values for Controller

 .ViewModels/ (Projects)- Stuff the controller wants to pass to the view so it can handle the display

