gpt4 book ai didi

c# - 将 IEnumerable 列表传递给 Controller

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:25 25 4
gpt4 key购买 nike

在我的 asp.net MVC 4 项目中,我试图将 IEnumerable 列表从 View 传递到 Controller 。问题是操作中收到的列表为空。请提供任何帮助。

这是我的代码的一部分

View :

@model IEnumerable<PFEApplication.Models.agent>
<div id="Leader">
@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)
<br />

}
<br />
<input type="submit" value="Save" />
}
</div>

Controller :

     public ActionResult AddNewLeader(IEnumerable<agent> 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输入控件派生出正确的名称,并且生成的请求参数不会被模型绑定(bind)器解析。通常这是通过替换 foreach 来解决的与 for :

@fore (int i=0; i<Model.Count; i++)
{
@Html.HiddenFor(modelItem => 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)
<br />

}

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

关于c# - 将 IEnumerable 列表传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23299016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com