在 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>
}
在许多情况下,这将允许更优雅的代码。
这可能吗?
是的,有可能,
- 使用 GetEnumerator 获取对 Enumerator 的引用
- 调用 movenext 方法移动到下一个元素
参考这个堆栈溢出post
Using IEnumerable with for loops
var enumerator = getInt().GetEnumerator();
while(enumerator.MoveNext())
{
var MyObject = enumerator.Current;
Console.WriteLine(MyObject.Property);
}
我需要在 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>
}
在许多情况下,这将允许更优雅的代码。
这可能吗?
是的,有可能,
- 使用 GetEnumerator 获取对 Enumerator 的引用
- 调用 movenext 方法移动到下一个元素
参考这个堆栈溢出post Using IEnumerable with for loops
var enumerator = getInt().GetEnumerator();
while(enumerator.MoveNext())
{
var MyObject = enumerator.Current;
Console.WriteLine(MyObject.Property);
}