1

私は ASP.Net MVC3 を使用しています。次のように、モデル データを含む単純なテーブルを表示するビューがあります。

+------+---------------+----------------+
| | ID | 名前 | 注文 |
+------+---------------+----------------+
| | ID | 名前 | テキストボックス val=1 |
+------+---------------+----------------+
| | ID | 名前 | テキストボックス val=3 |
+------+---------------+----------------+
| | ID | 名前 | テキストボックス val=2 |
+------+---------------+----------------+

+------+ +--------------+
|提出 | | | 更新順 |
+------+ +--------------+

ここで、Order 列には、Order 値 (1、3、2 など) を含む入力ボックスが含まれています。[Item {ID, Name, Order}]Order列を読んでモデルを更新する必要があります。

つまり、HTML テーブルの列を読み取って、Order 値を Model に送信する必要があります。これを行う方法?

4

1 に答える 1

1

各アイテムのビュー モデルを作成します。

    public class ItemViewModel
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Value { get; set; }
    }

アクションのモデル:

    public class EditViewModel
    {
        public IEnumerable<ItemViewModel> Items { get;set; }
        public int Index { get; set; }
    }

次のように行をレンダリングします。

    @foreach (var item in Model.Items)
    {
        <tr>
            <td><input type="hidden" name="Id[@Model.Index]" value="@item.Id" />@item.Id</td>
            <td>@item.Name</td>
            <td><input type="text" name="Value[@Model.Index]" value="@item.Value" /></td>
        </tr>
        @{ Model.Index = Model.Index + 1 }
    }

そして最後に行を次のように受け取ります。

    [HttpPost]
    public ActionResult Edit(ItemViewModel[] items)
    {

    }
于 2012-09-04T06:47:40.817 に答える