【问题标题】:Error - Object reference not set to an instance of an object错误 - 对象引用未设置为对象的实例
【发布时间】:2010-12-01 16:27:27
【问题描述】:

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

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

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

我该如何解决这个问题?

【问题讨论】:

标签: asp.net vb.net nullreferenceexception


【解决方案1】:

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

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

并且您试图在此处设置它的“文本”属性,即使变量为空(访问空对象上的属性)

label11.Text = dtrReader("EmployeeId")

【讨论】:

  • 确保您的标签名称存在。我不熟悉您使用的 CreateUserWizard 控件,但主要问题是,它没有找到您的控件。
【解决方案2】:

您的FindControl 电话正在返回null

【讨论】:

    【解决方案3】:

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

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

    如果没有出现异常,则意味着您的 FindControl 方法无法找到 ID 为“Label11”的控件,因此将空值分配给 label11

    【讨论】:

      猜你喜欢
      • 2011-07-09
      • 2012-08-31
      • 2011-11-21
      • 2012-10-01
      • 1970-01-01
      • 2022-08-18
      • 2012-09-19
      相关资源
      最近更新 更多