VB .Net - 通过设定数量的列表项循环

时间:2014-06-30 08:54:29

标签: asp.net .net asp.net-mvc vb.net

我有20个项目的清单。但是对于我的设计,我需要确保每ul个项目不超过5个。有没有办法可以遍历列表,每隔5个,就开始一个新的ul?不确定这是否可行,但如果您有任何其他选择,请告诉我。

当前列表:

 <ul>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
</ul>

期望的结果:

<ul>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
</ul>

<ul>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
</ul>

<ul>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
</ul>

<ul>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
    <li><a href="#">list item</a></li>
</ul>

3 个答案:

答案 0 :(得分:1)

因为它是MVC,所以很容易以一种简单的方式做到这一点,而不需要在代码中使用String Builders和html。

假设您的页面模型是您的数据模型的数量。

您可以执行类似

的操作
@For i As Integer = 0 to Model.Count() - 1

    @IIf(i Mod 5 = 0, Html.Raw("<ul>"), "")

    @<li>@Model(i).Value</li>

    @IIf((i + 1) Mod 5 = 0, Html.Raw("</ul>"), "")

Next

注意由于我使用vb.net进行MVC,因此尚未经过测试并且已经有一段时间了,所以可能不是100%正确

答案 1 :(得分:0)

您是否希望操纵现有和呈现的HTML?因为那时我不会使用VB.NET,而是使用jQuery或某种客户端技术来操纵你的HTML。如果您要从要发送到视图的代码编写HTML,则可以尝试以下代码:

Dim sb As New StringBuilder()

sb.Append("<ul>")

For i As Integer = 1 To 20 Step 1

    sb.Append("<li><a href=''>list item</a></li>")

    If (i Mod 5) = 0
        sb.Append("</ul><ul>")
    End If

Next

Dim result As String = sb.ToString()
result = result.Remove(result.LastIndexOf("<ul>"))

答案 2 :(得分:0)

试一试

    Dim someItms() As String = New String() {"Lorem", "ipsum", "dolor", "sit", _
                                           "amet", "consectetur", "adipisicing", _
                                           "tempor", "incididunt", "ut", "labore", _
                                           "sunt", "in", "culpa", "qui", "officia", "deserunt", _
                                           "mollit", "anim", "id", "est", "laborum", "LASTITEM"}



    Dim myelmnts As XElement = <div></div>
    Const grpsz As Integer = 5 'numer of li's per ul
    For x As Integer = 0 To someItms.Length - 1 Step grpsz
        'get a group, note last group may or may not be full
        Dim foo As IEnumerable(Of String) = someItms.Skip(x).Take(grpsz)
        Dim ul As XElement = <ul></ul> 'define ul
        Dim li As XElement 'define li
        For Each s As String In foo 'create li's
            li = <li><a href="#"><%= s %></a></li>
            ul.Add(li) 'add to ul
        Next
        myelmnts.Add(ul) 'add completed ul to list
    Next