我有这个基于模型列表的视图,在该列表中,我根据布尔值为模型的每个项目创建强类型复选框。
这是我的看法:
@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] 属性,此方法不起作用(它将显示为“未找到”);
- 我应该收到的列表是空的;
- 即使选中的值显示为 true,与复选框链接的每个隐藏字段的默认值为 false;
- 我正在使用 actionlink,因为我不想使用按钮,已经有一个按钮正在做另一项工作。
我愿意接受任何可用的评论/帮助,谢谢!