Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MVC: I need to understand the Model

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!

like image 734
dcolumbus Avatar asked Jun 07 '11 06:06

dcolumbus


People also ask

How do you understand about MVC?

MVC (Model-View-Controller) is a pattern in software design commonly used to implement user interfaces, data, and controlling logic. It emphasizes a separation between the software's business logic and display. This "separation of concerns" provides for a better division of labor and improved maintenance.

What does the model do in MVC?

The Model is the part of MVC which implements the domain logic. In simple terms, this logic is used to handle the data passed between the database and the user interface (UI). The Model is known as domain object or domain entity. The domain objects are stored under the Models folder in ASP.NET.

Why do we need models in MVC?

The central component of MVC, the model, captures the application's behavior in terms of its problem domain, independent of the user interface. The model directly manages the application's data, logic and rules. So the Model is the biggest, most important layer in most MVC applications.


1 Answers

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.

like image 174
BritishDeveloper Avatar answered Sep 20 '22 15:09

BritishDeveloper