Model view controller 模板编辑器的MVC IEnumerable;如何获得计数

Model view controller 模板编辑器的MVC IEnumerable;如何获得计数,model-view-controller,templates,view,count,ienumerable,Model View Controller,Templates,View,Count,Ienumerable,视图模型: public class Foo { IEnumerable<Bar> Bars { get; set; } 条形图模板: @Html.EditorFor(x => x.Bars) //this is the closest I could find @ViewData.TemplateInfo.HtmlFieldPrefix //equals "Bars[0]" on the first iteration 在渲染过程中,是否有方法获取模板内当前迭

视图模型:

public class Foo {
    IEnumerable<Bar> Bars { get; set; }
条形图模板:

@Html.EditorFor(x => x.Bars)
//this is the closest I could find 
@ViewData.TemplateInfo.HtmlFieldPrefix //equals "Bars[0]" on the first iteration

在渲染过程中,是否有方法获取模板内当前迭代的计数?除了将HtmlFieldPrefix字符串解析为计数之外。

您是否可以重新构造视图,使其执行以下操作:

@for( int idx = 0; idx < Model.Count; idx++ )
{
    @Html.EditorFor(m=>m[idx])
}

如果IEnumerable不支持Count,我深表歉意,但如果IEnumerable不支持Count,您可以使用其他支持Count的集合。

请在此分享,因为这个问题对我很有用,也可以帮助我

我坚持不触摸Foo模板,但计数应显示在条形模板中。这就是EditorFor处理IEnumerable的方式

我将使用ICollection,因为EF不支持用于延迟加载的IEnumerable。ICollection具有Count属性。 即使我需要使用IEnumerable。我将遍历集合并执行I++。之后,在迭代或foreach完成之后,我是总数。