我的数据库中有一个null值,如果我尝试对它执行任何数学操作,就会出现一个错误。我试着把这个放在我的控制员动作中:
If String.IsNullOrEmpty(item.Tbl_Food.Fiber_TD_g) Then
item.Tbl_Food.Fiber_TD_g = 0
End If这是我的领域模型:
Public Property Fiber_TD_g() As Nullable(Of Double)但是,它说"Nullable对象必须有一个值“。在If String.IsNullOrEmpty(item.Tbl_Food.Fiber_TD_g) Then线路上。如何检查"string“(它是双字符串,而不是字符串)是否为空,并正确地将其默认为零?
编辑:
我在下面尝试了一个建议,我不再在我的控制器中出现错误,而是在我的视图中。它说,"Nullable对象必须有一个值。“在我看来,FiberTotal += item.Tbl_Food.Fiber_TD_g是行的。
Dim food = db.Tbl_Food_Logs.Where(Function(x) x.FLog_Employee_ID = empId And x.FLog_Created_Date >= date2 And x.FLog_Created_Date < tomorrow)
For Each item In food
If IsDBNull(item.Tbl_Food.Fiber_TD_g) Then
item.Tbl_Food.Fiber_TD_g = 0
End If
Next
Return View(food)发布于 2012-11-05 13:26:52
顾名思义,String.IsNullOrEmpty是一个字符串操作。如果您通过一个double,它将无法工作。而是检查一下它是否是Is Nothing
If item.Tbl_Food.Fiber_TD_g Is Nothing Then
item.Tbl_Food.Fiber_TD_g = 0
End If此操作非常常见,VB有一个快捷方式,称为空合并运算符(2参数If):
item.Tbl_Food.Fiber_TD_g = If(item.Tbl_Food.Fiber_TD_g, 0)当If有两个参数时,如果它不是null,它返回第一个参数,如果它是null,则返回第二个参数。
发布于 2012-11-05 13:24:19
If IsNull(item.Tbl_Food.Fiber_TD_g) Then
item.Tbl_Food.Fiber_TD_g = 0
End If或
If Trim(item.Tbl_Food.Fiber_TD_g) Then
item.Tbl_Food.Fiber_TD_g = 0
End If发布于 2012-11-05 13:26:44
您可以将字符串IsNullOrEmpty看作是检查未初始化的字符串变量,而不是检查对象是否为空。我想你想要这样的东西,为了最大限度的安全。
If Not item Is Nothing Then
If Not item.TBL_food Is Nothing Then
If Not item.Tbl_Food.Fiber_TD_g Is Nothing Then
'do something
End If
End If
End Ifhttps://stackoverflow.com/questions/13233018
复制相似问题