在C#Razor页面中替代foreach

时间:2016-10-29 01:54:31

标签: c# asp.net-mvc razor asp.net-mvc-5 razor-2

我需要在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 个答案:

答案 0 :(得分:4)

是的,有可能,

  1. 使用GetEnumerator
  2. 获取对Enumerator的引用
  3. 调用movenext方法移至下一个元素
  4. 参考此堆栈溢出帖子 Using IEnumerable with for loops

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