Mówiąc najprościej, lubię myśleć o następujących rzeczach:
Model: Ściśle wygląda i działa jak model danych. Pod każdym względem jest to tylko reprezentacja klasowa modelu danych. Nie ma wiedzy o Twoim Widoku ani żadnych elementach w Twoim Widoku. To powiedziawszy, nie powinien zawierać żadnych dekoratorów atrybutów (tj. Wymagane, Długość itp.), Których użyłbyś w swoim Widoku.
Widok modelu: służy jako łącznik danych między widokiem a modelem, aw wielu przypadkach jest również opakowaniem dla Twojego modelu. Byłby bezużyteczny bez widoku, więc zazwyczaj nie można go ponownie użyć w wielu widokach i kontrolerach, tak jak w przypadku standardowego modelu.
Na przykład model może mieć następujące właściwości, które są bezpośrednimi reprezentacjami źródła danych:
public string FirstName { get; set; }
public string LastName { get; set; }
Teraz, ponieważ model widoku jest powiązany z widokiem, może mieć następującą właściwość - która łączy pola FirstName i LastName modelu razem jako jeden ciąg:
[Display(Name = "Customer Name")]
public string CustomerFullName { get { return String.Format("{0} {1}", myModel.FirstName, myModel.LastName) }}