Giả sử chúng ta có như sau (quá đơn giản) Kịch bản:kiến trúc MVC --tái sử dụng viewmodel tương tự cho đọc và chỉnh sửa
Chúng tôi có một màn hình để xem chi tiết người và một màn hình để chỉnh sửa chi tiết người.
Màn hình hiển thị màn hình chi tiết người đều có các lĩnh vực sau (như chỉ hiển thị):
Tên Họ Bio
Màn hình chỉnh sửa người chi tiết chương trình có các trường (trong điều khiển đầu vào) như sau:
ID (ẩn) Tên Họ Bio
Say dis của chúng tôi chơi viewmodel trông như thế này:
public class DisplayPersonViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Bio { get; set; }
}
Và chỉnh sửa viewmodel của chúng tôi trông như thế này:
chênh lệchpublic class EditPersonViewModel
{
[Required]
public int ID { get; set; }
[Required]
[StringLength(20)]
public string FirstName { get; set; }
[Required]
[StringLength(20)]
public string LastName { get; set; }
[Required]
public string Bio { get; set; }
}
Không có nhiều giữa 2, eh? Mô hình chỉnh sửa có thêm một trường (ID) và một số thuộc tính trên các thuộc tính. Bây giờ, nếu chúng ta kết hợp 2 như thế này:
public class DisplayPersonViewModel
{
[Required]
[StringLength(20)]
public string FirstName { get; set; }
[Required]
[StringLength(20)]
public string LastName { get; set; }
[Required]
public string Bio { get; set; }
}
public class EditPersonViewModel : DisplayPersonViewModel
{
[Required]
public int ID { get; set; }
}
Điều này chắc chắn là DRY hơn, vì chúng ta không có các trường trùng lặp để duy trì, nhưng bây giờ chúng tôi có thông tin không liên quan (thuộc tính) trên viewmodel trưng bày của chúng tôi. Tôi đang nghiêng về phía phương pháp thứ hai, bất kể, bởi vì một số màn hình của chúng tôi có hơn 25 trường! (... và đó là ngoài tầm kiểm soát của tôi, vì vậy xin vui lòng không harp trên nó :) ...) Tuy nhiên, tôi chỉ muốn nghe ý kiến để có được một cảm giác tốt hơn về những gì có thể là "thực hành tốt nhất".
Vâng, điều gì sẽ xảy ra nếu bạn đang làm việc trên một ứng dụng lớn với nhiều mô hình có thể có nhiều hơn một hoặc nhiều trường trong mỗi ứng dụng? Và khi ứng dụng phát triển, bạn tiếp tục thêm các trường. Làm cách nào để giữ nhiều chế độ xem cho bản chất của cùng một thực thể được đồng bộ hóa theo thời gian? – DOK