在VB.Net MVC中,如何将列表传递给视图并使用模型显示它?

时间:2016-12-01 15:23:01

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

我在VB中填充了一个字符串列表,并希望在View中显示其结果。我将列表返回到这样的视图:

Dim nameList As List(Of String) = New List(Of String)

Function AddName(theName As String) As ActionResult
    nameList.Add(theName)
    Return View(nameList)
End Function

但是,我似乎无法找到如何处理此列表作为模型的一部分并使用ASP显示它的示例。我的观点是一个.vbhtml文件,与.cshtml文件相比,语法感觉完全不同。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

在控制器中,您已将模型数据传递给视图。您需要在视图的第一行通知要使用的模型类型的视图。

例如,您可以使用For Each循环来显示数据:

@ModelType System.Collections.Generic.IEnumerable(Of String)
<div>
    <ul>
        @For Each s In Model
            @<li>
                @s
            </li>
        Next
    </ul>
</div>

答案 1 :(得分:1)

ASP.NET MVC不会在回发中保留nameList变量;它永远只是一个变量。如果您将它存储在会话或数据库中,从那里加载它,它将起作用:

Function AddName(theName As String) As ActionResult
    Dim nameList As List(Of String) = CType(HttpContext.Session("NAME_LIST"), List(Of String))

    If (nameList is Nothing) Then
       nameList = new List(Of String)
    End If

    nameList.Add(theName)

    HttpContext.Session("NAME_LIST") = nameList

    Return View(nameList)
End Function

请原谅我的VB,因为它有点生疏,希望语法足够接近。每次添加内容时,都会添加到会话中存储的列表中;第一次,列表将为null,因为它尚未在会话中创建,但是空检查会创建一个空列表,并且第一个项目将被添加为OK。当会话终止时,列表会消失,因此您可能需要合并数据库。