在 C# Razor 页面中替代 foreach

Alternative to foreach in C# Razor page

我需要在 ASP.NET MVC 5 站点的 Razor 页面中输出包含 IEnumerable 的复杂 HTML。

我想使用嵌套的 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. 使用 GetEnumerator 获取对 Enumerator 的引用
  2. 调用 movenext 方法移动到下一个元素

参考这个堆栈溢出post Using IEnumerable with for loops

var enumerator = getInt().GetEnumerator();
while(enumerator.MoveNext())
{
    var MyObject = enumerator.Current;
    Console.WriteLine(MyObject.Property);
}