I'm having trouble to bind a 2 level nested model. Here is what I've come up so far.
Model:
RequestSignature Model:
public class RequestSignature
{
public int Id { get; set; }
public string name { get; set;}
public virtual ICollection<Pages> Pages { get; set; }
public virtual ICollection<SignaturesImages> SignaturesImages { get; set; }
}
Pages Model:
public class Pages
{
public int Id { get; set; }
public string PageName {get; set;}
public int RequestSignatureId { get; set; }
[ForeignKey("RequestSignatureId")]
public virtual RequestSignature RequestSignature { get; set; }
public virtual ICollection<Signatures> Signatures { get; set; }
}
And Signatures Model:
public class Signatures
{
public int Id { get; set; }<br>
public Date SignatureDate { get; set;}
public int? PagesId { get; set; }
[ForeignKey("PagesId")]
public virtual Pages Pages { get; set; }
}
Item 1:
<input type="text" name="RequestSignature.name" value="Joe Smith" />
<input type="hidden" name="RequestSignature.Pages.Index" value="aa1" /><br>
<input type="text" name="RequestSignature.Pages[aa1].PageName" value="My Page /><br>
<input type="hidden" name="RequestSignature.Pages[aa1].Signatures.Index" value="aa2" /><br>
<input type="text" name="RequestSignature.Pages[aa1].Signatures[aa2].SignatureDate" value="12/22/2014" />
Item 2:
<input type="text" name="RequestSignature.name" value="MattJohnson" />
<input type="hidden" name="RequestSignature.Pages.Index" value="bb1" /><br>
<input type="text" name="RequestSignature.Pages[bb1].PageName" value="My Page />
Item 3:
<input type="text" name="RequestSignature.name" value="Bob Dylan" />
<input type="hidden" name="RequestSignature.Pages.Index" value="cc1" /><br>
<input type="text" name="RequestSignature.Pages[cc1].PageName" value="My Page /><br>
<input type="hidden" name="RequestSignature.Pages[cc1].Signatures.Index" value="cc2" /><br>
<input type="text" name="RequestSignature.Pages[cc1].Signatures[cc2].SignatureDate" value="12/22/2014" />
The problem is that since the Item 2 has no Signature(only one level) and it does not have a child hidden field, the Signature on Item 3 is being bonded to Item 2.
To save, I'm calling:
db.RequestSignature.Add(RequestSignature);
db.SaveChanges();
If I stop to debug before saving, It shows the Signature being bonded to the correct Item, even if there is a gap of signatures between Items but when the save happens, like I said, If the Item 2 has no signature, it saves the Signature3 as a child of Signature2
Thanks for any help....