将IEnumerable列表传递给控制器

在我的asp.net MVC 4项目中,我正在尝试将IEnumerable列表从视图传递到控制器。 问题是在动作中接收的列表为空。 请帮忙。

这是我的代码的一部分

观点:

@model IEnumerable 
@using (Ajax.BeginForm("AddNewLeader", "Equipe", FormMethod.Post, new AjaxOptions { UpdateTargetId = "Leader", HttpMethod = "Post", InsertionMode = InsertionMode.Replace })) { foreach (var item in Model) { @Html.HiddenFor(modelItem => item.ID_agent) @Html.RadioButtonFor(modelItem => item.SelectedAgent, item.ID_agent) @Html.DisplayFor(modelItem => item.nom_agent) @Html.DisplayFor(modelItem => item.prenom_agent)
}
}

控制器:

  public ActionResult AddNewLeader(IEnumerable ListAgent) { [...] if(ListAgent!=null) foreach (var ag in ListAgent) { if (ag.SelectedAgent != 0) { Id = ag.SelectedAgent; } } agent agentRemplace = db.agents.Single(a => a.ID_agent == Id); db.SaveChanges(); return PartialView("exitAddNewLeader"); } 

问题实际上是这个表达式:

 @Html.HiddenFor(modelItem => item.ID_agent) 

类似的也无法为HTML输入控件派生正确的名称,并且模型绑定器不会解析生成的请求参数。 通常这可以通过替换foreachfor

 @fore (int i=0; i modelItem[i].ID_agent) @Html.RadioButtonFor(modelItem => modelItem[i].SelectedAgent, modelItem[i].ID_agent) @Html.DisplayFor(modelItem => modelItem[i].nom_agent) @Html.DisplayFor(modelItem => modelItem[i].prenom_agent) 
}

请注意,您需要使用IList<>或数组键入视图以允许此行为。