0

私は次のIEnumerableを持っています

public class AuditDetailsViewModel
    {
    public string CustAddress { get; set; }
    public IEnumerable<DefectDetailsViewModel> DefectDetails { get; set; }

    }

    public class DefectDetailsViewModel
    {
        public string Description { get; set; }
        public string Comments { get; set; }
    }

私のかみそりのビューでは、Html ヘルパーを使用してこれを列挙する方法を教えてください。それがリストの場合、次のようなことができます

@model AIS.Web.Areas.Inspector.ViewModel.AuditDetailsViewModel
@for (int i = 0; i < Model.DefectDetails.Count(); i++)
{
    @Html.TextBoxFor(m => m.DefectDetails[i].Description)
}

しかし、ビューモデルが IEnumerable の場合、どうすればそれを行うことができますか?

4

2 に答える 2

0

使用する必要がありますToList()

var items = Model.DefectDetails.ToList();

    @for (int i = 0; i < items.Count; i++)
    {
        @Html.TextBoxFor(m => m.Description[i].ToBeAudited)
    }

編集:

IEnumerable にインデックスを適用することはできません。つまり、ToList() を使用してリストに変換する必要があります。

for..each ループを使用する場合、コントローラーにポストバックすると、テキスト ボックスのコンテンツは転送されません。インデクサーで for... ループを使用する必要があります。そうしないと、MVC モデル バインダーがデータを正しくバインドできません。

コードでは、コレクションを反復処理する前に ToList() を呼び出していないため、列挙型にインデックスを適用できないというエラーが発生します。

于 2013-10-14T12:33:22.263 に答える