我有以下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)
}
但如果viewmodel是IEnumerable,我该怎么办?
答案 0 :(得分:1)
在循环使用不可数的
时使用foreachforeach(var temp in Model.DefectDetails){
@Html.TextBoxFor(x => temp.Description)
}
希望这会有所帮助
答案 1 :(得分: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(),因此你得到的错误是它无法将索引应用于可枚举。