0

我找不到完整的例子。在网格和组合框上找到吨,但不是文本框。此测试是从 TypeCode = “0” 的 UserPhoneType 表中查找“PhoneTypeName”,并将第一个值分配给 asp.net 文本框。

目前,当将文本框设置为“phonetype.FirstOrDefault.PhoneTypeName.ToString”时,我得到“对象引用未设置为对象的实例”

Using dbContext As New EntitiesModel()
    Dim phonetype As IEnumerable(Of User_PhoneType) = dbContext.User_PhoneTypes.Where(Function(c) c.PhoneTypeCode = "O")
    mytextbox.Text = phonetype.FirstOrDefault.PhoneTypeName.ToString
End Using

- - 编辑 - -

我按照建议进行了更改。我还成功地将整个电话类型列表绑定到下拉列表控件...以确认数据是可访问的。这一定是我要在这里查询表以获取单个记录的方式。

我得到了同样的错误,但是在“Dim type = phonetype.First ...”记录在表中,但它似乎没有用我的代码提取。

Dim phonetype As IEnumerable(Of User_PhoneType) = dbContext1.User_PhoneTypes.Where(Function(c) c.PhoneTypeCode = "M")
Dim type = phonetype.FirstOrDefault
If Object.ReferenceEquals(type, Nothing) = False And Object.ReferenceEquals(type.PhoneTypeName, Nothing) = False Then
   mytextbox.Text = type.PhoneTypeName.ToString
End If
4

2 回答 2

2

通常有以下两个可能的原因导致此异常:

1) phonetype列表为空,FirstOrDefault方法返回 Nothing 值。

2) phonetype列表的第一个元素的PhoneTypeName属性具有Nothing 值。

为了确保不会将Object 引用设置为对象异常的实例,我建议您在设置 TextBox 值之前添加对 Nothing 的检查。它可能类似于以下内容:

Dim type = phonetype.FirstOrDefault
If Object.ReferenceEquals(type, Nothing) = False And Object.ReferenceEquals(type.PhoneTypeName, Nothing) = False Then
    mytextbox.Text = type.PhoneTypeName.ToString
End If
于 2013-06-26T11:07:55.517 回答
0

解决它。

我能够查看使用此生成的 SQL 字符串:mytextbox.text = phonetype.tostring

我看到 SQL 包含“NULL='O'”

我做了喜欢的例子?!?但是,当我将 .ToString 添加到要查询的字段时,它起作用了。

所以最终看起来像这样:

Using dbContext As New EntitiesModel()
    Dim phonetype As IEnumerable(Of User_PhoneType) = dbContext.User_PhoneTypes.Where(Function(c) c.PhoneTypeCode.**ToString** = "O")
    mytextbox.Text = phonetype.FirstOrDefault.PhoneTypeName.ToString
End Using

顺便说一句,首先检查 null 的 Dimitar 点是很好的建议 (+1)。正如他所说,价值没有任何意义。

于 2013-06-27T01:57:11.107 回答