我在这里遗漏了一些东西。我有一个带有复选框的项目表,我希望能够从中选择项目,然后将选中项目列表发送到控制器。我无法将任何内容传递给控制器。我想要一个可以在控制器中使用的列表或数组。
这就是我所拥有的:
@model Recipe2Grocery.ViewModels.GroceryListViewModel
@{
ViewBag.Title = "Index";
}
@section Scripts{
<style type="text/css">
table {
color: white;
}
</style>
}
<div style="margin: 20px;">
@using (Html.BeginForm("Index", "RecipeIngredient", FormMethod.Post))
{
<table class="table">
<tr>
<th></th>
<th>
Quantity
</th>
<th>
IngredientName
</th>
<th>
Category
</th>
@foreach (var item in Model.ShoppingList)
{
<tr>
<td>
@Html.CheckBoxFor(modelItem => item.IsChecked)
</td>
<td>
@Html.DisplayFor(modelItem => item.Ingredient.Quantity)
</td>
<td>
@Html.DisplayFor(modelItem => item.Ingredient.IngredientName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Ingredient.Category)
</td>
</tr>
}
</table>
<input type="submit" />
}
然后我有一个viewmodel:
public class ListItem
{
public bool IsChecked { get; set; }
public RecipeIngredient Ingredient { get; set; }
public ListItem()
{
Ingredient = new RecipeIngredient();
}
}
public class GroceryListViewModel
{
public List<ListItem> ShoppingList { get; set; }
public GroceryListViewModel()
{
ShoppingList = new List<ListItem>();
}
}
然后我的控制器想成为:
[HttpPost]
public ActionResult Index(GroceryListViewModel vm)
{
// blah
return RedirectToAction("Index", "Home");
}