EditorFor Template的MVC IEnumerable;如何获得计数
Posted
技术标签:
【中文标题】EditorFor Template的MVC IEnumerable;如何获得计数【英文标题】:MVC IEnumerable of EditorFor Template; how to get the count 【发布时间】:2011-04-13 22:23:24 【问题描述】:视图模型:
public class Foo
IEnumerable<Bar> Bars get; set;
Foo 模板:
@html.EditorFor(x => x.Bars)
条形模板:
//this is the closest I could find
@ViewData.TemplateInfo.HtmlFieldPrefix //equals "Bars[0]" on the first iteration
有没有办法在渲染过程中获取模板内当前迭代的计数?除了将 HtmlFieldPrefix 字符串解析为计数。
【问题讨论】:
【参考方案1】:您能否重组您的视图,使其执行以下操作:
@for( int idx = 0; idx < Model.Count; idx++ )
@Html.EditorFor(m=>m[idx])
抱歉,如果 IEnumerable 不支持 Count,但如果不支持,您可以使用其他支持的集合。
【讨论】:
【参考方案2】:只是在这里分享,因为这个问题对我有用,UIHint
and template 也对我有帮助。
我坚持不要触摸 Foo 模板,但计数应该显示在 Bar 模板中。这就是EditorFor
处理IEnumerable
的方式。
-
我将使用
ICollection
,因为EF 不支持IEnumerable
进行延迟加载。 ICollection
具有 Count
属性。
即使我需要使用IEnumerable
。我将遍历集合并执行i++
。稍后,在迭代或 foreach 完成后,i
是总数。
【讨论】:
以上是关于EditorFor Template的MVC IEnumerable;如何获得计数的主要内容,如果未能解决你的问题,请参考以下文章
mvc 3 Html.EditorFor 添加html属性不起作用
在 MVC 2 中将 css 类添加到 Html.EditorFor