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

1

我在遍历一个可枚举时使用了一个 foreach

foreach(var temp in Model.DefectDetails){
    @Html.TextBoxFor(x => temp.Description)
}

希望这会有所帮助

于 2013-10-14T13:03:09.350 回答
0

你将不得不使用ToList()

var items = Model.DefectDetails.ToList();

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

编辑:

您不能对 IEnumerable 应用索引,这是真的,这就是为什么您必须使用 ToList() 将其转换为 List 的原因。

如果您使用 for..each 循环,那么当您回发到控制器时,文本框中的内容将不会被传输。您必须使用带有索引器的 for...循环,否则 MVC 模型绑定器无法正确绑定数据。

在您的代码中,您没有在迭代集合之前调用 ToList() ,因此您会收到无法将索引应用于可枚举的错误。

于 2013-10-14T12:33:22.263 回答