2016-03-25 26 views
0

Sorun çok basittir :)mvc5 icollection her zaman boş

İki modelim var Ebeveyn ve Çocuk. Ebeveyn modeli çocukların koleksiyonunu içerir. Mesele şu ki, çocukları görebiliyorum, ama onlarda değişiklik yapamıyorum. Bu problemi çözmek için uzun saatler harcadım. Herhangi bir yardım veeeery takdir edilecektir.

ebeveyn modeli

namespace WebApplication1.Models 
{ 
    public class Parent 
    { 
     //public Parent() 
     //{ 
     // Child = new Collection<Child>(); 
     //} 

     public int ParentId { get; set; } 
     public string ZmiennaParent1 { get; set; } 

     public ICollection<Child> Child { get; set; } 
    } 
} 

Çocuk modeli:

namespace WebApplication1.Models 
{ 
    public class Child 
    { 
     public int ChildId { get; set; } 
     public string ZmiennaChild1 { get; set; } 

     public int ParentId { get; set; } 
     public virtual Parent Parent { get; set; } 
    } 
} 

benim görünüm:

@for (int i = 0; i < Model.Child.Count(); i++) 
{ 
    @Html.EditorFor(model => Model.Child.ElementAt(i).ZmiennaChild1, new { htmlAttributes = new { @class = "form-control" } }) 
} 

ve benim denetleyicisi:

// GET:/Ebeveyn/Düzenleme/5 public ActionResult Düzenleme (int? id) { (id == null ise) { yeni HttpStatusCodeResult (HttpStatusCode.BadRequest); i nokta Onları düzenleyebilir ilgili çocuklara ancak görüntülemek mümkün olmam yazdığı gibi /: }

var parent = db.Parents.Include(u => u.Child).SingleOrDefault(u => u.ParentId == id); 

    if (parent == null) 
    { 
     return HttpNotFound(); 
    } 
    return View(parent); 
} 

// POST: /Parent/Edit/5 
// To protect from overposting attacks, please enable the specific properties you want to bind to, for 
// more details see http://go.microsoft.com/fwlink/?LinkId=317598. 
[HttpPost] 
[ValidateAntiForgeryToken] 
//public ActionResult Edit(Parent parent) 
public ActionResult Edit([Bind(Include="ParentId,ZmiennaParent1, Children")] Parent parent) 
{ 
    if (ModelState.IsValid) 
    { 
     if (parent.Child != null) 
     { 
      foreach (Child element in parent.Child) 
      { 
       db.Entry(element).State = EntityState.Modified; 
      } 
      db.SaveChanges(); 
     } 

     db.Entry(parent).State = EntityState.Modified; 
     db.SaveChanges(); 

     return RedirectToAction("Index"); 
    } 
    return View(parent); 
} 

Ben herhangi bir yardım için teşekkür ederiz çok olacak.

+1

Bunu niçin klasik olarak etiketlediniz, burada herhangi bir klasik asp göremiyorum. –

cevap

0

Ebeveyn üzerinde Çocuklar için özelliği yok, bir Child özelliği var. Ama Bağlama özelliği Çocuklar diyor. Özelliği değiştirin ...

public ActionResult Edit([Bind(Include="ParentId,ZmiennaParent1, Child")] Parent parent) 
+0

BU VAR ​​!!! ÇOK TEŞEKKÜR EDERİM !!! Bunu çözmeye çalıştığım için 5,5 saat harcadım !!! : D: D: D – Blue

+0

Üzgünüm, bu andan itibaren oy kullanamıyorum, oy kullanmamın doğru olduğunu düşünüyorum ... :( – Blue