Альтернатива foreach на странице C# Razor
Мне нужно вывести сложный HTML, содержащий IEnumerable, на странице Razor на сайте ASP.NET MVC 5.
Я хотел бы использовать вложенные циклы for для структурирования HTML - однако это невозможно, если весь вывод объекта заключен в цикл foreach.
Вместо того, чтобы использовать foreach
цикл, есть ли способ сделать что-то вроде этого, что бы получить следующий объект в последовательности:
if (x = 1)
{
for (var x=0; x<2; x++)
{
<div class="row">
for (var n=0; n<4; n++)
{
<div class="a">
Model.GetNextObject.Name
</div>
}
</div>
}
}
else
{
<div class="b">
Model.GetNextObject.Name
</div>
}
Во многих ситуациях это позволило бы создать более элегантный код.
Это возможно?
1 ответ
Решение
Да, это возможно,
- Получить ссылку на Enumerator с помощью GetEnumerator
- Вызовите метод movenext для перехода к следующему элементу
Обратитесь к этой публикации переполнения стека Использование IEnumerable с циклами for
var enumerator = getInt().GetEnumerator();
while(enumerator.MoveNext())
{
var MyObject = enumerator.Current;
Console.WriteLine(MyObject.Property);
}