Tworzę spis zamków, każdy zamek ma numer seryjny (tytuł), powiązaną szkołę (SchoolCode) i 5 powiązanych kombinacji (mających numer, kombinację i isActive). Używamy Ncommon i linq i ustawiliśmy je jako zagnieżdżone elementy (Lock Has Many Combinations).Jak używać atrybutu [Bind (Include = "")] w złożonych obiektach zagnieżdżonych?
W formularzu używam szablonów JQuery do dynamicznego budowania formularza. Gdzie SchoolCode i Title są podstawowymi elementami formularza, Kombinacje [index] .Liczba i kombinacje [indeks] .Kombinacja to podelementy.
<form method="post" action="/Lockers.aspx/Locks/Add">
<input type="hidden" name="SchoolCode" value="102">
Lock S/N: <input type="text" name="Title" value=""><br>
<div id="combinations">
<input type="hidden" name="Combinations[0].Number" value="1">
<input type="text" name="Combinations[0].Combination" value="">
<input type="radio" value="1" name="ActiveCombination"><br>
<input type="hidden" name="Combinations[1].Number" value="2">
<input type="text" name="Combinations[1].Combination" value="">
<input type="radio" value="2" name="ActiveCombination"><br>
<input type="hidden" name="Combinations[2].Number" value="3">
<input type="text" name="Combinations[2].Combination" value="">
<input type="radio" value="3" name="ActiveCombination"><br>
<input type="hidden" name="Combinations[3].Number" value="4">
<input type="text" name="Combinations[3].Combination" value="">
<input type="radio" value="4" name="ActiveCombination"><br>
<input type="hidden" name="Combinations[4].Number" value="5">
<input type="text" name="Combinations[4].Combination" value="">
<input type="radio" value="5" name="ActiveCombination"><br></div>
<input type="submit" id="add" value="Add »"> <br>
</form>
Po uruchomieniu tego bez atrybutów wiązania powiązanie modelu działa poprawnie. Po dodaniu powiązania nie wydaje mi się, aby wiązał się z którymkolwiek z Kombinacji.
[HttpPost]
public ActionResult Add([Bind(Include = "SchoolCode,Title,Combinations.Combination,Combination.Number,Combinations[2].Combination")] LockerLock @lock, [Range(1, 5)] int ActiveCombination)
{
...
}