我正在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代码总是被执行。 我也尝试过尝试/捕获异常。
感谢提前阅读/回答,我真的被困在这里一段时间了。
答案 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
}