View中的System.NullReferenceException

时间:2014-07-16 09:17:54

标签: asp.net asp.net-mvc vb.net asp.net-mvc-4

我正在VB.NET中构建一个ASP.NET MVC应用程序。 到目前为止,我基本上已经完成了所有核心功能并且运行了。 (它是Entitiy-Value-Attribute DB的前端,带有可选的FileUpload for Value Entries。)

我使用存储库模式来访问数据库。 我的控制器/详细信息功能看起来像这样:

Function Details(Optional ByVal id As Integer = Nothing) As ActionResult
    ViewData("Message") = "All details."

    Dim value As value

    value = ValueRepo.GetByID(id)
    'i tried to validate and/or redirect here'

    Return View(value)
End Function

详情视图包含以下这段代码。

<div>
@* I tried to validate here too.. *@
    @If Model.fileID = 0 Then
        @Html.ActionLink("Download File[" + Model.filestorage.fileName + "][" + Model.filestorage.mimeType + "]", "GetFile", "FileStorage", New With {.id = Model.fileID}, Nothing)
    End If
</div>

如果某些用户输入的ID不存在。 例如。 /值/信息/ IDthatdoesntexist

@If Model.fileID行正在抛出System.NullReferenceException。 (显然因为模型是空的......)

我尝试在代码中标记的点验证各种方法。 例如,对于IsDBNull,是Nothing等,但Model.fileID代码总是被执行。 我也尝试过尝试/捕获异常。

感谢提前阅读/回答,我真的被困在这里一段时间了。

1 个答案:

答案 0 :(得分:0)

在提交模型之前对模型进行空检查:

Dim value As value    
value = ValueRepo.GetByID(id)
if value == null
//have some dummy values or something else
    End If
Return View(value)

同样在你看来:

   @{
     If Model!=null
       If Model.fileID = 0 Then
            Html.ActionLink("Download File[" + Model.filestorage.fileName + "][" + Model.filestorage.mimeType + "]", "GetFile", "FileStorage", New With {.id = Model.fileID}, Nothing)
        End If
     End If
}