I’ve been working with the MVC pattern for a while now, but I honestly don’t feel like I truly understand how to work with and apply the “Model” … I mean, one could easily get away with using only the Controller and View and be just fine.
I understand the concept of the Model, but I just don’t feel comfortable applying it within the pattern… I use the MVC pattern within .NET and also Wheels for ColdFusion.
“the Model represents the information (the data) of the application and the business rules used to manipulate the data” – yes, I get that… but I just don’t really understand how to apply that. It’s easier to route calls to the Controller and have the Controller call the database, organize the data and then make it available to the View. I hope someone understands where my confusion resides…
I appreciate your help in advance!
Look at it like this. When your client requests a page this is what happens (massively trimmed):
He ends up at your controller
The controller gets the necessary data from your model
The controller then passes the data to the view which will create your HTML
The controller sends the HTML back to the client
So client -> controller -> model -> controller -> view -> controller -> client
So what is the model? It is everything that is required to get the data required for you view!
It is services
It is data access
It is queries
It is object mapping
It is critical ‘throw exception’ style validation
Your controller should not be writing your queries if you are sticking to the pattern. Your controller should be getting the correct data required to render the correct view.
It is acceptable for your controller to do a few other things such as validating posted data or some if/else logic but not querying data – merely calling services (in your model area) to get the data required for your view.