创建一个List(of String),给出错误“对象引用未设置为对象的实例”。

时间:2011-11-01 15:04:24

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

MVC 3 razor VB.NET项目。我已经使用手动构建下拉框的列表,因此我可以确保选择列表中的某些值可用,并且还可以控制列表中的第一个项目。以下是我的代码片段,它给我带来了问题..

      Dim _courses1 As Integer = db.courses.ToList.Where(Function(r) r.course_day = "Tuesday").Count
        Dim _classes1 As List(Of cours) = db.courses.ToList
        Dim classRef1 As List(Of String)
        If Not _selectedClass0 = "--" Then
            classRef1.Add("--")
        Else
            classRef1.Add(_selectedClass0)
        End If
        For i As Integer = 0 To _courses1 - 1
            For Each item In _classes1.Where(Function(f) f.course_day = "Tuesday")
                Dim _item As cours = item
                classRef1.Add(_item.course_ref)
            Next
        Next
        ViewBag.tue1 = classRef1

_selectedClass0只是一个先前设置的字符串...当提到else语句的ClassRef1.Add(_selectedClass0)部分时,会发生错误。错误时哪个_selectedClass0字符串值为“ - ”。我感觉它是如何创建列表但我不确定......任何想法???

2 个答案:

答案 0 :(得分:3)

你没有初始化classRef1。

 Dim classRef1 As new List(Of String)

我看到的另一件事是在第一行 - 我已经做出了改变:

Dim _courses1 As Integer = db.courses.Where(Function(r) r.course_day = "Tuesday").Count()

如果您的所有获取都是计数,则您不需要在开头列出。

答案 1 :(得分:1)

您在此声明classRef1是字符串列表:

Dim classRef1 As List(Of String)

但您实际上从未使用New创建实例。我不确定VB语法,因为我是C#开发人员,但我猜你应该在声明之后添加以下行:

classRef1 = New List(Of String)