MVC IEnumerable EditorFor Template; как подсчитать - PullRequest
0 голосов
/ 14 апреля 2011

ViewModel:

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 в счетчике.

Ответы [ 2 ]

0 голосов
/ 22 октября 2012

Просто чтобы поделиться здесь, так как этот вопрос полезен для меня, и UIHint и шаблон мне тоже помогают.

Я не прикасаюсь к шаблону Foo, но счетчик должен отображаться в шаблоне Bar. так вот как EditorFor обрабатывает IEnumerable.

  1. Я буду использовать ICollection, потому что EF не поддерживает IEnumerable для отложенной загрузки. ICollection имеет Count свойство.
  2. Даже если мне нужно использовать IEnumerable. Я буду перебирать коллекцию и делать i++. Позже, после завершения итерации или foreach, i - это сумма.
0 голосов
/ 14 апреля 2011

Не могли бы вы реструктурировать свой взгляд так, чтобы он делал что-то вроде этого:

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

Извинения, если IEnumerable <> не поддерживает Count, но если это не так, вы можете использовать какую-то другую коллекцию,.

...