C# 包含条件逻辑的正确Razor语法是什么
我想在razor文件中每行显示3个项目。我必须在每3项中添加div class=row和结束标记。以下是我最好的尝试:C# 包含条件逻辑的正确Razor语法是什么,c#,razor,C#,Razor,我想在razor文件中每行显示3个项目。我必须在每3项中添加div class=row和结束标记。以下是我最好的尝试: @{ int maxInRow = 3; int counter = 1; <div class="main"> @foreach(var item in allItems) { if(counter == 1) { <div class="row"> } <div cl
@{
int maxInRow = 3;
int counter = 1;
<div class="main">
@foreach(var item in allItems)
{
if(counter == 1)
{
<div class="row">
}
<div class="article">Here is the article.</div>
@{counter++;}
if(counter == maxInRow)
{
counter = 1;
</div>
}
</div>
}
正确的Razor语法是什么?我认为您可以使用以下代码实现:
@{
<div class="main">
@for (int i = 0; i < allItems.Count; i += 3)
{
<div class="row">
@for (int j = i; j < i + 3 && j < allItems.Count; j++)
{
<div class="article">Here is the article. @allItems[j]</div>
}
</div>
}
</div>
}
如果它不起作用,请进行注释。您可以使用LINQ和分组使其变得非常简单
var itemsInGroupsOf3 = allItems.Select((item, i) => new { Index = i, Item = item })
.GroupBy(i => i.Index / 3);
foreach(var group in itemsInGroupsOf3)
{
var groupItems = group.Select(g => g.Item);
<div class="row">
@foreach(var item in groupItems)
{
<div class="article">Here is the article.</div>
}
</div>
}
你们有什么错误吗?比条件HTML好得多,条件HTML容易出错,很难维护。我需要I和J作为计数器,所以我选择了这个作为答案。