2016-03-31 24 views
0

benim asp.net mvc appÇok karmaşık bir modeli yönetmenin en iyi yolu nedir?

public class USERS{ 
     public int PK { get; set; } // Primary key 
     public string Username { get; set; } 
     public string Password { get; set; } 
     public int FK_PEOPLE { get; set; } //Foreign key to table PEOPLE 
     public PEOPLE Person { get; set; } // The very PEOPLE property 
     ...10-15 additional fields, including List<SomeEntity>, etc. 
} 

yılında model olarak kullanmak aşağıdaki varlık var Ve burada bir KULLANICILAR benim View nesnesi gönderdiğinizde sonra, sınıf KİŞİ

public class PEOPLE{ 
     public int PK { get; set; } // Primary key 
     public string Name { get; set; } 
     public string Surname { get; set; } 
} 

olduğunu Tüm verileri alıyorum ve her şeyi bir formda gösteriyorum. Herşey yolunda. Tüm verileri görebiliyorum. İşleri daha süslü hale getirmek için Kısmi Görünümde İNSANLAR özelliklerini gösteriyorum.

HttpPost Eylemimde modeli geri aldığımda sorunlar görünüyor. USERS.PK ve USERS.FK_PEOPLE, ancak USERS.Person varlık almak için (HiddenFor kullanarak) yönetilen varlık her zaman boş.

[Bind (Önek = "USERS")] bölümünü denedim ancak yardımcı olmadı. Çalıştığım bir tazminat olsa bile, bunu modelimin her bir mülkiyeti için yapmalı mıyım? Her bir mülk için tüm bağlantıları manuel olarak düzeltmem gerekiyor mu? Bu

minettar tüm yardım için ben :)

PS alabilirsiniz .. ben HttpGet Eylem gönderdi en azından, tam benim modeli almak için olmak .. sonsuza daha iyi bir yol var olan alacaktı: Biliyorum, Model bağlama hakkında birçok konu var ama ben bir bağlayıcı sorunum olduğunu düşünmüyorum. Bağları “önlemek” için bir yol bulmak istiyorum.

+0

Aksi belirtilmiyorsa, görünümünüz yanlıştır ve ** bir _binding sorununuz var. Göster! (ve "HtmlFieldPrefix" öğesini "extraViewData" olarak geçmediğiniz sürece kısmi bir çalışma kullanılmayacaktır. "EditorTemplate" kullanın) –

+0

Ancak bu modeli geri yüklemek istiyor musunuz? –

+0

Muhtemelen bir düz görünümde göstermeniz gereken özelliklere sahip bir ViewModel yaratacağım, böylece çok fazla iç içe geçmiş karmaşık nesneniz yok. –

cevap

0

Kredi benim PartialView yanlış kullanıyordum

@StephenMuecke gider. Sollution onu EditorTemplate olarak kullanmaktı. Yani, bu işleri:

<div class="form-group"> 
     @Html.EditorFor(m => m.PERSON) 
    </div> 

Bu işe yaramazsa:

<div class="form-group"> 
     @{ Html.RenderPartial("~/Views/PartialViews/Person/Index.cshtml", Model.PERSON); } 
    </div> 

Son olarak, tüm yapmak zorunda ~ PERSON.cshtml benim PartialView adlandırmak ve altında hareket etmekti/Görüntüleme/Shared/EditorTemplates/

Çok teşekkürler!