เมื่อพัฒนาแอปพลิเคชัน ASP.NET MVC ที่อนุญาตให้อัปเดตโมเดลคุณต้องมีวิธีรู้วิธีนำโมเดลมุมมองที่อัปเดตและจับคู่กลับไปยังโมเดลที่ได้รับการอัปเดตในขณะนี้ ดูเหมือนจะมีวิธีการที่แตกต่างกันสองสามอย่างในการทำเช่นนี้และฉันสงสัยว่าสิ่งเหล่านี้ไม่เหมาะสมกับ MVC (เหมือนกับการมีตัวควบคุมที่เก็บข้อมูลของคุณซึ่งควรเป็นแบบจำลองไม่ใช่แบบ MVC ที่เหมาะสม)
ทุกรุ่นที่ดูมีรหัส: ข้อดี
- ตรวจสอบให้แน่ใจเสมอว่าคุณสามารถจับคู่กับโมเดลของคุณได้
จุดด้อย
- คุณต้องระมัดระวังอย่างแท้จริงว่าไม่มีการเปลี่ยนแปลง ID ใด ๆ อีกคุณสามารถให้ผู้ใช้อัปเดตแถวที่ไม่ควรเข้าถึงได้
เฉพาะรุ่นมุมมองขั้นต่ำสุดเท่านั้นที่มี ID: ข้อดี
- จำเป็นต้องตรวจสอบน้อยกว่าเพื่อหลีกเลี่ยงผู้ใช้ที่อัปเดตข้อมูลที่ไม่ควรเข้าถึง
จุดด้อย
- ยิ่งยากต่อการติดตามว่ามุมมองแบบใดตรงกับโมเดลใด
- คุณยังคงต้องตรวจสอบรุ่นที่มี ID บางรุ่นเพื่อให้แน่ใจว่าผู้ใช้ไม่ได้อัปเดตข้อมูลที่ไม่ควรเข้าถึง
ไม่มีรุ่นที่มี ID:
ข้อดี
- ไม่จำเป็นต้องตรวจสอบ ID เพื่อรับการปรับปรุง
จุดด้อย
- คุณต้องละทิ้งการไร้สัญชาติ
ดังนั้นฉันมีสองคำถาม
ก่อนอื่นมีตัวเลือกที่ถูกต้อง / ไม่ถูกต้องหรือไม่? (ถ้าไม่นั่นหมายความว่าการเลือกเป็นเรื่องของความเห็นและความเห็นของคำถามที่สองเป็นไปตามและควรละเว้น)
ประการที่สองหากมีตัวเลือกที่ถูกต้อง / ไม่ถูกต้องมันคืออะไร?
เพื่อชี้แจงความคิดเห็นที่ฉันพูดคุยเมื่อคุณมีรูปแบบการดูที่เลียนแบบวัตถุฐานข้อมูลของคุณ
คิดว่านี่:
public class InvoiceViewModel //Does not have ID, does not relate to model.
{
public CustomerViewModel CustomerVM { get; set; } //Maybe has ID? Does relate to model.
public AddressViewModel BillingAddressVM { get; set; } //Ditto
public AddressViewModel ShippingAddressVM { get; set; } //Ditto
public List<InvoiceLineItemViewModel> ItemVMs { get; set; } //Each one has an ID?
}
ไม่ใช่สิ่งนี้:
public class InvoiceViewModel
{
public Customer Customer { get; set; }
public Address BillingAddress { get; set; }
public Address ShippingAddress { get; set; }
public List<InvoiceLineItem> Items { get; set; }
}
You have to abandon statelessness.
- คุณเพิ่งเลือกใช้ MVC ไร้จุดหมาย