現在、一連のチェックボックスに基づいて一括更新を作成しようとしています。エンティティ フレームワークを使用してそれを行う正しい方法が見つからないようです。
MVC3 と Razor で ASP.Net 4 を使用しています。
ここに私がこれまでに持っているコードがあります。
ページを表示 (正常に動作)
@model List<LeagueCounters.Models.champion>
<form name="setFree id="setFree" method="POST" action="/Champion/SetFree">
@foreach (var item in Model)
{
if (item.isFree == true)
{
<input type="checkbox" id="@item.id" checked="checked" /> @Html.DisplayFor(modelItem => item.displayName)
}
else
{
<input type="checkbox" id="@item.id" /> @Html.DisplayFor(modelItem => item.displayName)
}
}
<p><input type="submit" value="Save" /></p>
コントローラー (エラー)
[HttpPost, Authorize(Roles = "Admin")]
public ActionResult SetFree(FormCollection fcMain)
{
var sortedList = from c in _db.champions
orderby c.name
select c;
int counter = 0;
foreach (champion champ in sortedList)
{
if (fcMain[counter].Contains("true"))
champ.isFree = true;
else
champ.isFree = false;
_db.champions.Attach(champ);
_db.ObjectStateManager.ChangeObjectState(champ, EntityState.Modified);
counter++;
}
_db.SaveChanges();
return View();
}
エラー
インデックスが範囲外でした。負ではなく、コレクションのサイズより小さくなければなりません。パラメータ名:インデックス
質問
コントローラのチェックボックスを適切に切り替えるにはどうすればよいですか? そして、その時点に到達したら、大量更新コードは機能しますか?
前もって感謝します。