マイページでは、ユーザーがチェックボックスリストからビジネスを選択し、それらのビジネスをデータベースに挿入できます。
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" />
}
このフォームはアクションに投稿され、ここでもすべてがうまく機能しています。
私の問題は、最初のエントリだけが画面に戻されることです。そのため、チェックボックスでビジネスが 1 つしか選択されていない場合は、コントローラーから返されるパーシャルビューが dom に追加されますが、複数のビジネスが選択されている場合は、最初のビジネスのみが表示されます。
最初の挿入が成功した後にコントローラーメソッドが「戻り」、プロセスを終了し、その後の呼び出しが行われないためだと思います。
私の唯一の混乱は、すべてのビジネスが正常に挿入されたことです。それらも失敗すると思いますが、ページを更新すると、すべてのビジネスが正しく表示されます。