Dalam istilah yang paling sederhana, saya suka memikirkan yang berikut:
Model: Secara ketat terlihat dan terasa seperti model data Anda. Untuk semua maksud dan tujuan, ini hanya representasi kelas dari model data Anda. Itu tidak memiliki pengetahuan tentang Tampilan Anda atau elemen apa pun dalam Tampilan Anda. Namun, itu tidak boleh berisi dekorator atribut apa pun (yaitu; Diperlukan, Panjang, dll.) Yang akan Anda gunakan untuk Tampilan Anda.
Model Tampilan: Berfungsi sebagai pengikat data antara Tampilan dan Model Anda dan dalam banyak kasus, juga merupakan pembungkus untuk Model Anda. Ini akan dianggap tidak berguna tanpa View, jadi biasanya tidak dapat digunakan kembali di beberapa View dan Controllers seperti Model standar.
Sebagai contoh, Model Anda mungkin memiliki properti berikut, yang merupakan representasi langsung dari sumber data Anda:
public string FirstName { get; set; }
public string LastName { get; set; }
Sekarang, karena Model Tampilan Anda terkait dengan Tampilan Anda, mungkin memiliki properti berikut - yang menggabungkan bidang NamaDepan Model dan bidang NamaBelakang bersama sebagai satu string:
[Display(Name = "Customer Name")]
public string CustomerFullName { get { return String.Format("{0} {1}", myModel.FirstName, myModel.LastName) }}