M in MVC do not stand for the ViewModel but for everything that is used to get information into the controller (which adapts it and put it in a view). M is in other words the data source that the controller uses. It can be a webservice, a repository or anything else.
MVC doesn't really care about your layers.
Responsibilities:
- M: Used to provide data to the controller
- C: Adapt the data received from M and put it into the view
- V: Present the data for the user.
Try to honor those responsibilities. Do not add logic into your views. Do not add business logic into your controllers. Keep everything nice and separated. It makes it a lot easier to extend and maintain your application.
ASP.NET MVC
In ASP.NET MVC we have View Models which is used to remove logic from the views. If need to display a message like "n/a" for a property that isn't specified, do it in the viewmodel and not in the view.
The HtmlHelpers was created for the exact same reason: To remove logic from your views.