ในแง่ที่ง่ายที่สุดฉันชอบคิดสิ่งต่อไปนี้:
โมเดล:ดูและให้ความรู้สึกเหมือนโมเดลข้อมูลของคุณอย่างเคร่งครัด สำหรับเจตนาและวัตถุประสงค์ทั้งหมดเป็นเพียงการแสดงคลาสของโมเดลข้อมูลของคุณ ไม่มีความรู้เกี่ยวกับมุมมองของคุณหรือองค์ประกอบใด ๆ ในมุมมองของคุณ ที่กล่าวว่าไม่ควรมีตัวตกแต่งแอตทริบิวต์ใด ๆ (เช่นจำเป็นความยาว ฯลฯ ) ที่คุณจะใช้สำหรับมุมมองของคุณ
View Model:ทำหน้าที่เป็นตัวประสานข้อมูลระหว่าง View และ Model ของคุณและในหลาย ๆ กรณีก็เป็น Wrapper สำหรับ Model ของคุณเช่นกัน มันจะถูกทำให้ไร้ประโยชน์หากไม่มี View ดังนั้นโดยทั่วไปแล้วจะไม่สามารถใช้ซ้ำได้ในหลาย ๆ View และ Controllers เหมือนรุ่นมาตรฐาน
ตัวอย่างเช่นโมเดลของคุณอาจมีคุณสมบัติดังต่อไปนี้ซึ่งเป็นการแสดงถึงแหล่งข้อมูลของคุณโดยตรง:
public string FirstName { get; set; }
public string LastName { get; set; }
ตอนนี้เนื่องจาก View Model ของคุณเชื่อมโยงกับ View ของคุณโมเดลอาจมีคุณสมบัติดังต่อไปนี้ซึ่งเชื่อมฟิลด์ FirstName ของโมเดลและฟิลด์ LastName เข้าด้วยกันเป็นสตริงเดียว:
[Display(Name = "Customer Name")]
public string CustomerFullName { get { return String.Format("{0} {1}", myModel.FirstName, myModel.LastName) }}