停止Razor循环
本文关键字:循环 Razor 停止 | 更新日期: 2023-09-27 18:27:25
是否有任何方法可以跟踪Razor循环,并在循环进行到一半时采取一些操作,然后继续循环:
例如。我有这个:
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.Assignee)
}
我想要(伪):
@var halfway = Model.count / 2
@var count = 0
@foreach (var item in Model) until count == halfway
{
@Html.DisplayFor(modelItem => item.Assignee)
}
// hear we've reached halfway through, so I want to change add some HTML to the screen
<hr />
@foreach remainder (var item in Model)
{
@Html.DisplayFor(modelItem => item.Assignee)
}
谢谢你的建议,
最大
您可以在物品列表中使用LINQ:
@var halfway = Model.count / 2
@foreach (var item in Model.Take(halfway))
{
@Html.DisplayFor(modelItem => item.Assignee)
}
// Do your thing
<hr />
@foreach remainder (var item in Model.Skip(halfway))
{
@Html.DisplayFor(modelItem => item.Assignee)
}
@for(int i=0;i<= halfway ; i++)
{
@Html.DisplayFor(modelItem => item.Assignee)
}
我建议您使用for
循环,而不是foreach
循环,当然前提是您的Model支持它。然后您可以使用count作为迭代器,只需检查count == halfway
是否存在。
您可以将其作为一个单独的循环来完成,并跟踪您所处的位置,当您到达中点时,您可以显示额外的html。
@{
var halfway = Model.Count() / 2;
var count = 0;
var isHalfway = false;
}
@foreach (var item in Model)
{
if ((count >= halfway) && (!isHalfway))
{
isHalfway = true;
<hr />
}
@Html.DisplayFor(modelItem => item.Assignee)
count++;
}
另一种选择是使用Linq:
@foreach (var item in Model.Take(halfway))
{
@Html.DisplayFor(modelItem => item.VideoCode)
}
<hr />
@foreach (var item in Model.Skip(halfway))
{
@Html.DisplayFor(modelItem => item.VideoCode)
}
一个较短的选项
@{
var halfway = Model.Count()/2;
var count = 0;
}
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.Assignee)
if (count++ == halfway)
{
<p>Your html code</p>
}
}