在ASP.Net中创建一个剃刀动态html表

时间:2015-01-30 10:05:59

标签: c# asp.net asp.net-mvc razor rss

我正在尝试连续三行显示RSS新闻。我目前可以使用以下代码一次显示每行中的每个项目:

@foreach (var item in ViewBag.RSSFeed)
    {
        <tr>
            <td>
                @Html.Raw(item.Description)
            </td>
        </tr>
    }

我试图使用两个循环语句,但无法让它不破坏代码。如何使用循环语句一次动态生成三个项目的RSS源中的内容?

3 个答案:

答案 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;
}

JSFIDDLE

答案 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的解决方案似乎更好

以下是示例输出

enter image description here