MVC n'a pas de modèle de vue : il a un modèle, une vue et un contrôleur. Un ViewModel fait partie de MVVM (Modèle-Vue-ViewModel). MVVM est dérivé du Modèle de Présentation et est popularisé en WPF. Il devrait également y avoir un modèle dans MVVM, mais la plupart des gens ratent complètement le point de ce modèle et n'auront qu'une vue et un view model. Le modèle dans MVC est similaire au modèle dans MVVM.
Dans MVC, le processus est divisé en 3 responsabilités différentes :
- La vue est responsable de présenter les données à l'utilisateur
- Un contrôleur est responsable du flux de la page
- Un modèle est responsable de la logique métier
MVC n'est pas très adapté pour les applications web. C'est un modèle introduit par Smalltalk pour créer des applications de bureau. Un environnement web se comporte complètement différemment. Il n'a pas beaucoup de sens de copier un concept vieux de 40 ans du développement de bureau et de le coller dans un environnement web. Cependant, beaucoup de gens pensent que c'est ok parce que leur application compile et renvoie les bonnes valeurs. À mon avis, ce n'est pas suffisant pour déclarer un choix de conception comme étant ok.
Un exemple d'un modèle dans une application web pourrait être :
public class LoginModel
{
private readonly AuthenticationService authentication;
public LoginModel(AuthenticationService authentication)
{
this.authentication = authentication;
}
public bool Login()
{
return authentication.Login(Username, Password);
}
public string Username { get; set; }
public string Password { get; set; }
}
Le contrôleur peut l'utiliser comme ceci :
public class LoginController
{
[HttpPost]
public ActionResult Login(LoginModel model)
{
bool success = model.Login();
if (success)
{
return new RedirectResult("/dashboard");
}
else
{
TempData["message"] = "Nom d'utilisateur et/ou mot de passe invalide";
return new RedirectResult("/login");
}
}
}
Vos méthodes de contrôleur et vos modèles seront petits, facilement testables, et pertinents.
4 votes
Cette publication est ce que vous cherchez - "Qu'est-ce qu'un ViewModel ASP.NET MVC?"
6 votes
Cet article semble génial : rachelappel.com/…
0 votes
Possible doublon de En MVC, qu'est-ce qu'un ViewModel?