我正在尝试连续三行显示RSS新闻。我目前可以使用以下代码一次显示每行中的每个项目:
@foreach (var item in ViewBag.RSSFeed)
{
<tr>
<td>
@Html.Raw(item.Description)
</td>
</tr>
}
我试图使用两个循环语句,但无法让它不破坏代码。如何使用循环语句一次动态生成三个项目的RSS源中的内容?
答案 0 :(得分:3)
使用list和css规则而不是表格可以轻松实现:
<ul>
@foreach (var item in ViewBag.RSSFeed)
{
<li>
@Html.Raw(item.Description)
</li>
}
</ul>
CSS:
ul {
list-style-type: none;
}
ul li {
float: left;
padding: 5px;
}
ul li:nth-child(3n + 4) {
clear: left;
float: left;
}
答案 1 :(得分:1)
您可以使用简单的for loop
代替foreach
循环来实现目标。
@{var items = ViewBag.RSSFeed;}
@for (int i = 0; i < items.Count(); i++)
{
<tr>
<td>
@Html.Raw(items[i].Description)
</td>
@{i++;}
@if (i < items.Count())
{
<td>
@Html.Raw(items[i].Description)
</td>
}
@{i++;}
@if (i < items.Count())
{
<td>
@Html.Raw(items[i].Description)
</td>
}
</tr>
}
答案 2 :(得分:0)
这会有用吗?不能将其作为评论发布,我假设与@Zabavsky所说的相同。
@{var i = 0;
var idx = 0;
var j = 2;}
<table>
@while (i <= j)
{
<tr>
@while (idx < ViewBag.RssFeed.Length && i <= j)
{
<td>
@Html.Raw(ViewBag.RssFeed[idx]);
@{idx++; i++;}
i++;
</td>
}
@{j += 3;
}
@if (idx >= ViewBag.RssFeed.Length)
{
break;
}
</tr>
}
</table>
这只是一个示例
修改:这将每行打印3个。但@ Zabavsky的解决方案似乎更好
以下是示例输出