在我的MVC应用程序中,我有一个视图,可以根据布尔属性为列表中的每个项生成复选框。
视图显示没问题。
我希望根据是否选中复选框来获取列表中的所有项目。
第一步是这个actionlink:
<p>
Send Items: @Html.ActionLink("Click Here", "SendItems")
</p>
这是控制器中编写的方法:
public ActionResult SendItems(IList<ObjInfo> listToSend)
{
m_ListInventoryToSend = new List<ObjInfo>();
foreach (var item in listToSend.Where(item => item.m_IsSelected))
{
m_ListInventoryToSend.Add(item);
}
return View(m_ListInventoryToSend);
}
现在我面临很多问题,因为我正在学习如何编写MVC应用程序,我真的需要你的帮助:
谢谢!
答案 0 :(得分:2)
您无法通过ActionLink
发送列表,(除非您执行非常丑陋的查询字符串构建)。
首先,你应该做的是创建一个能够容纳布尔值的模型:
public class MyModel
{
public List<ObjInfo> Items { get; set; }
}
在视图中设置模型:
@model MyModel
遍历您的模型项以放置一个复选框(必须是for
循环才能使模型绑定起作用):
@using (Html.BeginForm("SendItems", "ControllerName")
{
for (int i = 0; i < Model.Items.Count; i++)
{
@* Have hidden fors to keep any other data in the class*@
@HiddenFor(m => m.Items[i].Id)
@Html.CheckBoxFor(model => model.Items[i].IsChecked)
}
<input type="submit" value="Save" />
}
然后,有一个Post方法,如下:
[HttpPost]
public ActionResult SendItems(MyModel model)
{
foreach (var item in model.Items.Where(item => item.IsSelected))
{
m_ListInventoryToSend.Add(item);
}
//rest of your post action
}