I am using incremental sequencing for a collection of objects in a form. All works fine and dandy except when I need to use DropDownListFor. Lots of questions concerning binding a dropdown and selecting the correct value, which is working fine in my case. However I am unclear on what is supposed to have on the HttpPost action in my controller. Here is my code:
Model
public class WorkRequestList
{
public WorkRequest[] Requests { get; set; }
public Vehicle[] Vehicles { get; set; }
}
View
<% 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") %>
<%}%>
Posted Action
[HttpPost]
public ActionResult Schedule(WorkRequestList form)
{
//what goes here?
}
The dropdown lists get populated just fine, they get pre-selected just fine. But on post back form.Requests.AssignedTo is null. I'm assuming the Vehicle Id is being posted back somewhere, but how do I get to that without resorting looping through the Request
magic strings:
var id = Request["Requests[" + i + "].AssignedTo"];