找不到Null Reference的原因。有什么建议?

时间:2015-06-09 09:11:38

标签: asp.net vb.net visual-studio-2013 nullreferenceexception

我正在设计一个应用程序站点,但问题是我在测试时一直收到Null Reference。我尝试在第一个屏幕上保存详细信息,并得到一个空引用警告:

NewRedesign.dll中发生了'System.NullReferenceException'类型的异常但未在用户代码中处理

附加信息:未将对象引用设置为对象的实例。

在以下代码行中:

     hdrChange.GrantID = cbGrantAvailable.SelectedItem.Value.ToString

我正在努力解决这个问题,并觉得我必须遗漏一些东西。如果您的代码花时间阅读并可能提出建议,我们将不胜感激。请不要给我发送链接,因为我已经阅读了Stack Overflow和其他网站上的几乎所有内容,但我仍然无法解决问题。谢谢。其余代码如下:

     Protected Sub btnSave_Click(sender As Object, e As EventArgs)

    FocusSet = False
    errCount = 0
    ErrDetails.Text = ""

    If (Not IsPostBack) AndAlso (Not IsCallback) Then

        txtGrantAvailable.Visible = False
        cbGrantAvailable.Visible = True
        cbGrantAvailable.SelectedIndex = 0
        Session("ProjectTypeID") = (From o In dc1.ProjectTypes Where o.ProjectTypeDescription Like "%Cycle Parking%").FirstOrDefault

        Populate_Details()
    End If

    'Contact Details
    If txtVisibleDiv.Text = "divContactDetails" Then

        ' Determine if any errors occur
        If txtLeadOfficerFirstName.Text.Length = 0 Then
            ErrDetails.Text = ErrDetails.Text + "Please select a Lead Officer for your application." + vbNewLine
            ErrDetails.Visible = True
            If FocusSet = False Then
                txtProjectTitle.Focus()
                FocusSet = True
            End If
            errCount = errCount + 1
        End If

        If txtProjectTitle.Text.Length < 3 Or txtProjectTitle.Text = "" Then
            ErrDetails.Text = ErrDetails.Text + "Please enter a title for your application." + vbNewLine
            ErrDetails.Visible = True
            If FocusSet = False Then
                txtProjectTitle.Focus()
                FocusSet = True
            End If
            errCount = errCount + 1
        End If

        If txtProjectDescription.Text.Length < 3 Or txtProjectDescription.Text = "" Then
            ErrDetails.Text = ErrDetails.Text + "Please enter a description for your application." + vbNewLine
            ErrDetails.Visible = True
            If FocusSet = False Then
                txtProjectTitle.Focus()
                FocusSet = True
            End If
            errCount = errCount + 1
        End If

        ' If there are any errors then ensure the errors are displayed
        If FocusSet = True Then
            ErrDetails.ForeColor = Drawing.Color.Red
            ErrDetails.Height = 20 * errCount
            ' Show the Overview screen at the beginning
            If (Not ClientScript.IsStartupScriptRegistered("showonlyonev2")) Then
                Page.ClientScript.RegisterStartupScript _
                (Me.GetType(), "showonlyonev2", "showonlyonev2('divContactDetails');", True)
            End If
            If (Not ClientScript.IsStartupScriptRegistered("showonlyonev2")) Then
                Page.ClientScript.RegisterStartupScript _
                (Me.GetType(), "showonlyonev2", "showonlyonev2('divContactDetails');", True)
            End If
            Return
        End If

        lblProjectName.Text = txtProjectTitle.Text
        Dim SustransUser As Boolean
        Dim UserID As String = Session("UserID").ToString
        If Session("IsSustrans") = "False" Then
            SustransUser = False
        Else
            SustransUser = True
        End If

        Dim hdrChange = (From o In dc1.GrantApplicationHeaders Where o.GrantApplicationID.ToString = Session("CurrentProjectID").ToString).FirstOrDefault
        If Not IsNothing(hdrChange) Then
            hdrChange.GrantID = cbGrantAvailable.SelectedItem.Value.ToString
            hdrChange.GrantApplicationUserID = UserID
            hdrChange.GrantApplicationSustransUser = SustransUser
            hdrChange.GrantApplicationOrganisationID = Session("OrganisationID").ToString
            hdrChange.GrantApplicationOrganisationAddressID = Session("OrganisationAddressID")
            hdrChange.GrantApplicationLeadOfficerID = ddlSelectOrganisationOfficers.SelectedItem.Value.ToString
            hdrChange.GrantApplicationTitle = txtProjectTitle.Text
            hdrChange.GrantApplicationDescription = txtProjectDescription.Text
            hdrChange.GrantApplicationProjectTypeID = Session("ProjectTypeID")
            dc1.SubmitChanges()
        Else
            Dim NewGrantApplicationHeader As New GrantApplicationHeader
            With NewGrantApplicationHeader
                .GrantID = cbGrantAvailable.SelectedItem.Value.ToString
                '.GrantApplicationID = Session("CurrentProjectID").ToString
                .GrantApplicationUserID = UserID
                .GrantApplicationSustransUser = SustransUser
                .GrantApplicationOrganisationID = Session("OrganisationID").ToString
                .GrantApplicationOrganisationAddressID = Session("OrganisationAddressID").ToString
                .GrantApplicationLeadOfficerID = ddlSelectOrganisationOfficers.SelectedItem.Value.ToString
                .GrantApplicationTitle = txtProjectTitle.Text
                .GrantApplicationDescription = txtProjectDescription.Text
                .GrantApplicationProjectTypeID = Session("ProjectTypeID").ToString
            End With
            dc1.GrantApplicationHeaders.InsertOnSubmit(NewGrantApplicationHeader)
            dc1.SubmitChanges()
            Dim GetCurrentProjectID = (From o In dc1.GrantApplicationHeaders Where o.GrantID = cbGrantAvailable.SelectedItem.Value.ToString And o.GrantApplicationUserID = UserID And o.GrantApplicationSustransUser = SustransUser And o.GrantApplicationOrganisationID = Session("OrganisationID").ToString And o.GrantApplicationOrganisationAddressID = Session("OrganisationAddressID").ToString And o.GrantApplicationLeadOfficerID = ddlSelectOrganisationOfficers.SelectedItem.Value.ToString And o.GrantApplicationTitle = txtProjectTitle.Text And o.GrantApplicationDescription = txtProjectDescription.Text).FirstOrDefault
            If Not IsNothing(GetCurrentProjectID) Then
                Session("CurrentProjectID") = GetCurrentProjectID.GrantApplicationID.ToString
            End If 

0 个答案:

没有答案