停止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)
}

谢谢你的建议,

最大

停止Razor循环

您可以在物品列表中使用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>
    }
}