3

IEnumerable @model から特定のアイテムにアクセスする必要があります。

以下のコードですべてのアイテムに到達できることを知っています:

@foreach (var item in Model) {
    <tr>
        <td>
        @Html.DisplayFor(modelItem => item.FoodName)
        </td>
}

しかし、次のようなことをして、(例として) 3 番目の項目にアクセスする必要があります: Model[3].FoodName

MVC の IEnumerable オブジェクトから特定のインデックス項目に到達する方法はありますか?

4

1 に答える 1

8

ElementAt(index)拡張メソッドを使用できます:

Model.ElementAt(2)

または、モデル タイプを から または に変更IEnumerable<T>IList<T>ますT[]

@model IList<SomeViewModel>

これで、インデックスを使用してループできます。

@for (var i = 0; i < Model.Count; i++) 
{
    @Html.DisplayFor(x => x[i].FoodName)    
}

入力フィールド (EditorFor、TextBoxFor など) を生成する場合は、これが推奨される方法です。これは、正しい名前がそれらに割り当てられるためです。

于 2012-12-02T11:09:34.023 に答える