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 に答える