0

我已经从数据库中创建了一个项目列表。这些显示正确。现在我想将更改后的布尔值保存到我的数据库中。我怎样才能将所有这些项目接收到我的控制器,以便我可以通过 foreach 或其他方式遍历它们?

控制器

public class ItemController : Controller
{
    private SocialGEOContext db = new SocialGEOContext();
    public ActionResult ApproveItems()
    {
        Utility ut = new Utility();
        IEnumerable<Item> items;
        items = ut.GetAllDistrictItems();
        return View(items);
    }

    [HttpPost]
    public ActionResult ApproveItems( ??? )
    {
        ???
    }

在我试过的 HttpPost

    [HttpPost]
    public ActionResult ApproveItems( IEnumerable<Item> ViewItems )
    {
        foreach (Item item in ViewItems)
        {
            var testje = item.ItemTitle;
        }
        return View();
    }

但是 ViewItems 是空的

@model IEnumerable<LibModels.Item> 
@{
    ViewBag.Title = "ItemsByDistrict";
}

<h2>All items from district</h2>



@using (Html.BeginForm()) {
  @Html.ValidationSummary(true)
    <fieldset>
        <table>
        @foreach (var item in Model) {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.ItemID)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.ItemTitle)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.ItemCreateddate)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.ItemDescription)
                </td>
                <td>
                    @Html.EditorFor(modelItem => item.ItemApproved)
                </td>
            </tr>
        }
        </table>

        <p>
            <input type="submit" value="Edit" />
        </p>
    </fieldset>
}
4

2 回答 2

0

您的页面仅包含一个编辑器,item.ItemApproved但在您尝试获取的 post 方法中item.ItemTitle。尝试将控制器 post 方法更改为:

foreach (Item item in ViewItems) {
   var testje = item.ItemApproved;
}
于 2013-01-03T19:36:16.053 回答
0

您需要使用 for 循环才能使模型绑定起作用

@for(int i; i < Model.Count; i++) {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => modelItem[i].ItemID)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => modelItem[i].ItemTitle)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => modelItem[i].ItemCreateddate)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => modelItem[i].ItemDescription)
                </td>
                <td>
                    @Html.EditorFor(modelItem => modelItem[i].ItemApproved)
                </td>
            </tr>
        }

有关模型绑定集合的详细信息,请参阅本文

注意:您需要调用ToList()模型以便使用索引

换句话说,在您的操作方法中:

public ActionResult ApproveItems()
    {
        Utility ut = new Utility();
        IEnumerable<Item> items;
        items = ut.GetAllDistrictItems();
        return View(items.ToList());
    }

然后在视图中更改模型:

@model IList<LibModels.Item> 
于 2013-01-03T19:49:11.260 回答