记录集上的系统nullreferenceexception

时间:2017-01-30 15:38:37

标签: asp.net vb.net user-controls

在我提出这个问题之前,我查看了SO提出的所有建议,并对此进行了研究(什么是NullReferenceException,我该如何解决?)

我的Usercontrol中有一个函数

用户控制:

Function MedewerkerNaam(Medewerker as integer, Meisjesnaam as boolean) 
    MedewerkerNaam = "Onbekend"
    If IIsNumeric(Medewerker) = True Then
        rs = Server.CreateObject("ADODB.Recordset")
        rs.open ("SELECT Medewerkers.Medewerkers_Voornaams_AchternaamVoorvoegsel, Medewerkers.Medewerkers_Achternaam, Medewerkers.Medewerkers_MeisjesnaamVoorvoegsel, Medewerkers.Medewerkers_Meisjesnaam FROM Medewerkers WHERE Medewerkers.Medewerkers_ID = 0" & int(Medewerker), strCon)
        If NOT rs.EOF Then
            MedewerkerNaam = rs("Medewerkers_Voornaam") & " " & rs("Medewerkers_AchternaamVoorvoegsel") & " " & rs("Medewerkers_Achternaam")
            If Meisjesnaam = True AND rs("Medewerkers_Meisjesnaam") <> "" Then MedewerkerNaam = MedewerkerNaam & " - " & rs("Medewerkers_MeisjesnaamVoorvoegsel") & " " & rs("Medewerkers_Meisjesnaam")
        End If
        rs.Close
         rs = nothing
    End If
End Function

在我的webform.aspx中:

 <%dim deneme as new basic%>

 this is a testttt : <%=deneme.MedewerkerNaam(10,false)%>

为什么我会收到错误:

system.nullreferenceexception object reference not set to an instance of an object

错误来自的行:

 rs = Server.CreateObject("ADODB.Recordset") 

很抱歉,如果这是愚蠢的事情,那就是我没有得到它我怎样才能确保我不会再次遇到这个问题?

1 个答案:

答案 0 :(得分:2)

这是一个简单的范围问题。 服务器是您的aspx继承的 System.Web.UI.Page 的属性。我猜您的函数 MedewerkerNaam 是在此aspx页面类之外定义的,因此Server属性不可见。

您有两种选择:

  1. 将您的函数 MedewerkerNaam 移到驻留在 System.Web.UI.Page 的aspx类中。

    您的代码应该可以工作,因为基础aspx页面类&#39; 服务器 属性将可见,或

  2. 将Server对象传递给您的函数,就像这样......

    Function MedewerkerNaam(Medewerker as integer, Meisjesnaam as boolean, Server As System.Web.HttpServerUtility) 
        ...
    End Function
    
  3. 当您从aspx类调用MedewerkerNaam时,添加包括Server属性,如下所示:

    Public Class your_aspx_class
        Inherits System.Web.UI.Page
    
        Sub your_method(...)
            ...
            something = MedewerkerNaam(someint, somebool, Server)
            ...
        End Sub
    
    End Class