我的页面允许用户从复选框列表中选择企业并将这些企业插入数据库。
我使用 foreach 循环遍历表单集合中的每个项目,然后通过 db 上下文保存。
所有这一切都运作良好。
public ActionResult RecordBusinesses(FormCollection collection)
{
foreach (var item in collection.GetValues("mycheckboxlist"))
{
modelentity modelentity = new modelentity();
if (ModelState.IsValid)
{
db.modelentity.Add(modelentity);
db.SaveChanges();
}
return PartialView("_mypartialview", modelentity);
}
return PartialView("_mypartialview");
}
在视图中,复选框列表以 ajax 形式包装。
@using (Ajax.BeginForm(
"RecordBusinesses",
new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.InsertBefore,
UpdateTargetId = "insertedbusiness"
}))
{
foreach(var b in Model)
{
<input type="checkbox" name="mycheckboxlist" value="@b.businessid">@b.name
<br />
}
</div>
<input type="submit" />
}
此表单发布到操作,并且再次,一切运行良好。
我的问题是只有第一个条目被发布回屏幕。因此,如果复选框中仅选择了一个业务,则将从控制器返回的部分视图添加到 dom 中,但如果选择了多个业务,则仅显示第一个。
我猜那是因为控制器方法在第一次成功插入后“返回”,结束进程并且没有进行后续调用。
我唯一的困惑是所有业务都已成功插入。我希望那些也会失败,但是刷新页面后,所有业务都正确显示。