我有一个菜单的部分 View ,它呈现这样的菜单;
@helper RenderNav(CategoryViewModel item)
{
if (item.ChildCategories.Any())
{
<div class="link-block">
<ul>
@foreach (var sub in item.ChildCategories)
{
<li><a href="#"><i class="icon-angle-right"></i> @sub.Name</a></li>
@RenderNav(sub);
}
</ul>
</div>
}
}
@foreach (var item in Model)
{
<li>
<a href="#" class="label">@item.Name<i class="icon-chevron-down"></i></a>
<ul class="one" id="links">
<li>
@RenderNav(item)
</li>
</ul>
</li>
}
然而,生成的 HTML 总是连续重复,但我想在修复后将项目移动到下一列,例如 3 个项目,以便重新排列的项目应像这样显示;
<div class="link-block">
<ul>
<li><a href="#"><i class="icon-angle-right"></i> Menu 1</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 2</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 3</a></li>
</ul>
</div>
<div class="link-block">
<ul>
<li><a href="#"><i class="icon-angle-right"></i> Menu 4</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 5</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 6</a></li>
</ul>
</div>
<div class="link-block">
<ul>
<li><a href="#"><i class="icon-angle-right"></i> Menu 7</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 8</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 9</a></li>
</ul>
</div>
但是,当前的输出是;
<div class="link-block">
<ul>
<li><a href="#"><i class="icon-angle-right"></i> Menu 1</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 2</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 3</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 4</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 5</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 6</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 7</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 8</a></li>
<li><a href="#"><i class="icon-angle-right"></i> Menu 9</a></li>
</ul>
</div>
最佳答案
这是一个IEnumerable<T>
采用 source
的扩展方法喜欢 [A,B,C,D,E,F,G,H]
和一个 groupSize
3 并返回 [[A,B,C],[D,E,F],[G,H]]
.
static IEnumerable<IEnumerable<T>> GroupSequential(
this IEnumerable<T> source, int groupSize)
{
return source
.Select((x, i) => new { x, i })
.GroupBy(t => t.i / groupSize)
.Select(g => g.Select(t => t.x));
}
现在,不要这样做:
<ul>
@foreach (var item in Model)
{
<li>...render item...</li>
}
</ul>
这样做:
<table>
@foreach (var row in Model.GroupSequential(3))
{
<tr>
@foreach (var item in row)
{
<td>...render item...</td>
}
</tr>
}
</table>
关于c# - 在 ASP.Net MVC 中的 X 个项目之后水平重复项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21502517/