オブジェクトのリストを持つビューモデルがあります。
リストをWebGridにバインドすることは問題なく、すべてのデータを正しく表示します。
オブジェクトにはブール値があります。WebGridの各レコードに表示されるチェックボックスを選択して、ユーザーに変更してもらいます。ユーザーがさまざまなチェックボックスをオン/オフにしてから更新ボタンをクリックすると、オブジェクトの変更を保存できるようにしたいと思います。
この更新により、MVCとRazorで正しい「痛み」が証明されます。
これらの変更をコントローラーに送り返すにはどうすればよいですか?誰かアドバイスしてもらえますか?サンプルはありますか?
アップデート:
各チェックボックスに名前とIDを付けた後、フォーム全体をコントローラーに戻すことができました。値はitem.Idに設定され、チェックボックスが実際にチェックされている場合にのみフォームの属性に表示されます。
したがって、コントローラーでは、次のようにします。
public ActionResult Assign(FormCollection form)
{
var ch = form.GetValues("itemChk");
foreach (var id in ch)
{
//...Get object using id
//...Call your method
}
return View();
}
chは、アイテムの文字列配列です。チェックされたチェックボックスのみのID。チェックボックスの値としてitem.Idを返すことにより、アイテム自体にその値を割り当て/設定し、保存/更新できます。
次に、値とともに返されるすべてのチェックボックスを取得してみます。また、WebGridの各行のテキストボックスに移動し、戻り値を処理するために同様のことを試してください。
これが私がこの道を進むようになったリンクです。