私はそれがこれをレンダリングしているDinnerForm.ascxASP.Net MVCのモデルバインダと親/子レコードの更新
に<p>
<%int i = 0;
foreach (NerdDinner.Models.RSVP rsvp in this.Model.Dinner.RSVPs)
{ %>
<%= Html.Hidden("Dinner.RSVPs[" + i + "].RsvpID", rsvp.RsvpID)%>
<%= Html.Hidden("Dinner.RSVPs[" + i + "].DinnerID", rsvp.DinnerID)%>
<%= Html.TextBox("Dinner.RSVPs[" + i + "].AttendeeName", rsvp.AttendeeName)%>
<% i += 1;
} %>
</p>
を次のコードを追加することにより、子レコードの編集を許可するNerd Dinnerアプリケーションを変更しました:
<p>
<input id="Dinner_RSVPs[0]_RsvpID" name="Dinner.RSVPs[0].RsvpID" type="hidden" value="36" />
<input id="Dinner_RSVPs[0]_DinnerID" name="Dinner.RSVPs[0].DinnerID" type="hidden" value="63" />
<input id="Dinner_RSVPs[0]_AttendeeName" name="Dinner.RSVPs[0].AttendeeName" type="text" value="kp" />
<input id="Dinner_RSVPs[1]_RsvpID" name="Dinner.RSVPs[1].RsvpID" type="hidden" value="37" />
<input id="Dinner_RSVPs[1]_DinnerID" name="Dinner.RSVPs[1].DinnerID" type="hidden" value="63" />
<input id="Dinner_RSVPs[1]_AttendeeName" name="Dinner.RSVPs[1].AttendeeName" type="text" value="jim" />
</p>
私はDinnersControlerの投稿編集アクションメソッドを変更していません。 Parentディナーはいつものように更新されていますが、UpdateModel(夕食)と表示されます。子RSVPレコードを参照/更新していません。
Modelバインダーがコレクションを見て、運がないように、子レコードをレンダリングする際にいくつかのバリエーションを試しました。
UpdateModel(Parent)を呼び出して親/子レコードをワンショットで更新しています。現在のモデルバインダーで可能ですか?
@jamesshannonこの回答は近いです。更新モデルをループ内で修正して int i = 0; foreach(RSVP r in Dinner.RSVPs){ UpdateModel(r、 "Dinner.RSVPs [" + i + "]"); i ++; } と記されています。 –