错误 - 未将对象引用设置为对象的实例

时间:2010-12-01 16:27:27

标签: asp.net vb.net nullreferenceexception

当我运行以下代码时,它会出现以下错误:

  

“对象引用未设置为对象的实例。”

Protected Sub CreateUserWizard1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles CreateUserWizard1.Load

    Dim SQLData As New System.Data.SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated Security=True;User Instance=True")
    Dim cmdSelect As New System.Data.SqlClient.SqlCommand("SELECT TOP 1 EmployeeId FROM a1_admins Order by Id DESC", SQLData)
    Dim label11 As Label = CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Label11")
    SQLData.Open()
    Dim dtrReader As System.Data.SqlClient.SqlDataReader = cmdSelect.ExecuteReader()
    If dtrReader.HasRows Then
        While dtrReader.Read()
            label11.Text = dtrReader("EmployeeId")
        End While
    End If
    dtrReader.Close()
    SQLData.Close()
End Sub

End Class

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

您的FindControl来电正在返回null

答案 1 :(得分:0)

很难说没有堆栈跟踪(也许你可以提供它?),但我的猜测,看看你的代码是以下行返回null

Dim label11 As Label = CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("Label11")

并且你试图在这里设置它的“Text”属性,即使该变量为null(访问空对象上的属性)

label11.Text = dtrReader("EmployeeId")

答案 2 :(得分:0)

尝试使用以下内容替换label11.Text = dtrReader("EmployeeId")并检查是否仍然出现异常。

If Not label11 Is Nothing Then
label11.Text = dtrReader("EmployeeId") 
End If

如果未显示异常,则表示您的FindControl方法无法找到ID为“Label11”的控件,从而为label11分配空值。< / p>