Modelin güncellenmesine izin veren bir ASP.NET MVC uygulaması geliştirirken, güncellenmiş görünüm modelini nasıl alacağınızı ve şimdi güncellenen modelle nasıl eşleştireceğinizi bilmenin bir yolunu bulmanız gerekir. Bunu yapmanın birkaç farklı yolu var gibi görünüyor ve bunlardan herhangi birinin uygun MVC olup olmadığını merak ediyorum (modelinizde olması gereken denetleyicinizin depo verilerinin uygun MVC olmaması gibi)?
Tüm Görünüm Modellerinin bir kimliği vardır: Artıları
- Daima modelinizle eşleşebildiğinizden emin olun.
Eksileri
- Kimliklerin hiçbirinin değiştirilmemesine gerçekten dikkat etmelisiniz, aksi takdirde kullanıcıların erişmemeleri gereken satırları güncellemelerini sağlayabilirsiniz.
Yalnızca çıplak minimum görüntüleme modellerinin bir kimliği vardır: Artıları
- Kullanıcıların erişmemesi gereken verileri güncellemelerini önlemek için çok daha az kontrol gerekli.
Eksileri
- Hangi görünüm modellerinin hangi modelle eşleştiğini izlemek çok daha zor.
- Kullanıcının erişimi olmaması gereken verileri güncellemediğinden emin olmak için kimliğe sahip birkaç görünüm modelini kontrol etmeniz gerekir.
Hiçbir görünüm modelinin kimliği yok:
Artıları
- Güncellemeler için kimlikleri kontrol etmenize gerek yok.
Eksileri
- Vatansızlığı terk etmek zorundasınız.
İki sorum var.
İlk olarak, doğru / yanlış bir seçim var mı? (Değilse, bu, seçimin bir görüş meselesi olduğu ve ikinci soru görüşüme dayalı olduğu ve göz ardı edilmesi gerektiği anlamına gelir.)
İkincisi, doğru / yanlış bir seçim varsa, hangisi?
Bir açıklamaya açıklık getirmek için, veritabanı nesnenizi taklit eden bir görünüm modeliniz olduğunda konuşuyorum.
Bunu düşün:
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?
}
bu değil:
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'yi anlamsız kullanmayı tercih ettiniz.