【问题标题】:Why am I getting the NullReferenceException with this?为什么我会收到 NullReferenceException 异常?
【发布时间】:2014-07-01 14:04:21
【问题描述】:

我试图让看起来应该是一段简单的代码工作,但我一直得到 ole Null Reference Exception...

Dim materialID As Integer = CInt(Request.QueryString("MaterialID"))
    Dim s As String = Nothing
    DBTable = MaterialStuff.GetMaterialHeader(materialID)

    Using DBTable

        s = CType(DBTable.Rows(0).Item("MaterialID"), String)

        Try

            If CType(DBTable.Rows(0).Item("MaterialID"), String) IsNot Nothing Then

                CType(MaterialIdControl, TextBox).Text = s
            Else

            End If

        Catch ex As NullReferenceException

            MsgBox(ex.ToString)
        End Try
    End Using

这是MaterialIdControl 的来源:

Dim MaterialIdControl As Control = FindControl("txtMaterial")

单步执行时s 等于970(970 不是我知道的字符串,但以前的程序员搞砸了这个程序)无论如何,正确的值是存在的,但它仍然说有一个异常,任何知道我可以在哪里解决这个问题吗?

【问题讨论】:

  • NullReferenceException 的几乎所有情况都是相同的。请参阅“What is a NullReferenceException in .NET?”获取一些提示。
  • 你从哪里得到异常?也许它来自 DBTable.Rows,或者来自 DBTable.Rows[0].Item...
  • 我想通了,我把 im MaterialIdControl As Control = FindControl("txtMaterial") 放在了错误的位置,并且语法错误,所以它搞砸了。无论如何谢谢:)

标签: asp.net vb.net nullreferenceexception


【解决方案1】:

有几种可能:

1) 页面中不存在查询字符串“MaterialID”。

Request.QueryString("MaterialID")

这可能会导致 MaterialStuff.GetMaterialHeader(materialID) 引发空异常。 检查浏览器地址栏是否存在查询字符串。

2) 页面中可能不存在控件“txtMaterial”。

FindControl("txtMaterial")

这可能会导致 CType(MaterialIdControl, TextBox).Text = s 引发空异常

请检查您的代码,如果仍然没有找到异常原因,请将调试器生成的异常信息粘贴到此处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-08
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多