フォーム内のオブジェクトのコレクションにインクリメンタルシーケンスを使用しています。DropDownListForを使用する必要がある場合を除いて、すべて正常に機能します。ドロップダウンのバインドと正しい値の選択に関する多くの質問がありますが、私の場合は問題なく機能しています。ただし、コントローラーのHttpPostアクションに何が含まれるべきかがわかりません。これが私のコードです:
モデル
public class WorkRequestList
{
public WorkRequest[] Requests { get; set; }
public Vehicle[] Vehicles { get; set; }
}
意見
<% using (Html.BeginForm()) {%>
<% for (var i = 0; i < Model.Requests.Count(); i++) { %>
<%=Html.DropDownListFor(x => x.Requests[i].AssignedTo,new SelectList(Model.Vehicles,"Id","Name",Model.Requests[i].AssignedTo.Id)) %>
<%}%>
<%=Html.SubmitButton("TopSubmit","Submit") %>
<%}%>
投稿されたアクション
[HttpPost]
public ActionResult Schedule(WorkRequestList form)
{
//what goes here?
}
ドロップダウンリストは適切に入力され、事前に選択されています。しかし、ポストバックではform.Requests.AssignedToはnullです。Vehicle Idがどこかにポストバックされていると思いますが、Request
魔法の文字列をループすることなく、どうすればそれに到達できますか?
var id = Request["Requests[" + i + "].AssignedTo"];