Dans le plus simple des termes, j'aime penser à ce qui suit:
Modèle: ressemble et ressemble strictement à votre modèle de données. À toutes fins utiles, il ne s'agit que d'une représentation de classe de votre modèle de données. Il n'a aucune connaissance de votre vue ou de tout élément de votre vue. Cela dit, il ne doit contenir aucun décorateur d'attribut (c'est-à-dire obligatoire, longueur, etc.) que vous utiliseriez pour votre vue.
Modèle de vue: sert de liant de données entre votre vue et votre modèle et, dans de nombreux cas, est également un wrapper pour votre modèle. Il serait rendu inutile sans la vue, de sorte qu'il n'est généralement pas réutilisable sur plusieurs vues et contrôleurs comme un modèle standard.
Par exemple, votre modèle peut avoir les propriétés suivantes, qui sont des représentations directes de votre source de données:
public string FirstName { get; set; }
public string LastName { get; set; }
Maintenant, puisque votre modèle de vue est lié à votre vue, il peut avoir la propriété suivante - qui concatène le champ FirstName et le champ LastName du modèle en une seule chaîne:
[Display(Name = "Customer Name")]
public string CustomerFullName { get { return String.Format("{0} {1}", myModel.FirstName, myModel.LastName) }}