このビューは、ブール値に基づいてモデルの各アイテムに対して強く型付けされたチェックボックスを作成するモデルのリストに基づいています。
これが私の見解です:
@using MyApp.Models
@model IList<MyApp.Models.ObjInfo>
@{
ViewBag.Title = "Obj Inventory";
}
<h2>Search Inventory</h2>
<p>
@using (Html.BeginForm())
{
(Many search filters which are non-relevant)
<p>
Send Items: @Html.ActionLink("Click Here", "SendItems")
</p>
}
<table>
<tr>
<th>
Obj Name
</th>
<th>
Number In Stock
</th>
(...)
<th>
Select Item
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.OtherObj.m_Name)
</td>
(...)
<td>
@Html.CheckBoxFor(modelItem => item.m_IsSelected)
</td>
</tr>
}
</table>
プロセス全体が正常に機能し、モデルのリストの各項目のチェックボックスを備えたビューを実際に生成できます。
ここで私の質問は、チェックされたリスト内のアイテムのみを再グループ化してコントローラーに送信するリストを作成したいということです。どうすればそれができますか?誰かが私を助けたり、私に働く方法を提案したりできますか?
ありがとうございました!
* 編集 *
以下に説明するように、アイテムのリストを取得するために使用されるHttpPostメソッドは次のとおりです。
//
// GET: /Inventory/SendItems
[HttpPost]
public ActionResult SendItems(IList<ObjInfo> listToSend)
{
m_ListObjToSend = new List<ObjInfo>();
foreach (var item in listToSend.Where(item => item.m_IsSelected))
{
m_ListObjToSend .Add(item);
}
return View(m_ListObjToSend );
}
しかし、私は多くの問題に遭遇しました:
- [HttpPost]属性を設定すると、このメソッドは機能しません(「見つかりません」と表示されます)。
- 私が受け取ることになっているリストはnullです。
- チェックボックスにリンクされている各非表示フィールドのデフォルト値は、チェックされた値がtrueを示している場合でもfalseです。
- ボタンを使いたくないので、アクションリンクを使用しています。すでに別の仕事をしているボタンがあります。
コメントやヘルプをお待ちしております。ありがとうございます。